当使用g++4.5.2进行编译时,对类的引用是不明确的

Reference to class is ambiguous when compiling with g++4.5.2

本文关键字:引用 不明确 编译 g++4      更新时间:2023-10-16

我需要一些帮助:当使用g++4.1构建代码时,没有出现"对类的引用不明确"的错误。只有当使用g++4.5.2编译相同的代码时才会发生这种情况,下面是代码片段:

#include "tlm_utils/simple_initiator_socket.h"
using tlm_utils::simple_initiator_socket;
class HvEcu : public sc_module {
public:
......
simple_initiator_socket<HvEcu> initiator_socket;
//object instantiated here, also problem happend here....
......
};

我真的不知道为什么会发生这种情况,因为命名空间的语法肯定是有效的。有一个修复程序可以消除该消息,而不是"使用tlm_utils:simple_initiator_socket;",只需在上面显示的类的主体中放入"tlm_utils::simple_inititor_socket initiator_sockett;"。然而,我不明白为什么上面的代码不起作用,因为唯一的变化是编译器版本。

尝试使用显式调用:

class HvEcu : public sc_module {
tlm_utils::simple_initiator_socket<HvEcu> initiator_socket;

今天的教训:了解编译器的最新变化,并使用最新的稳定版本。否则,您将编写旧的错误代码;并遇到编译器的其他副作用。