【发布时间】:2012-11-16 00:38:02
【问题描述】:
我需要一些帮助:当使用 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_initiator_socketinitiator_socket;”在上面显示的类的主体中。但是我不明白为什么上面的代码不起作用,因为唯一的变化是编译器版本。
【问题讨论】:
-
您的代码不足以确切地知道问题出在哪里,但我假设您在主范围内有一个名为 simple_initiator_socket 的类,并且 GCC 很困惑。
-
@MaëlNison:这两个编译器版本不会失败吗?
-
也许“旧”版本的 GCC 假设 using 语句意味着开发人员明确想要使用命名空间的 simple_initiator_socket ?我不太确定,但这可能是一种解释。
-
@MaëlNison:很有趣。 user960095,您可以尝试删除 using 行以查看它的反应吗?还是使用
tlm_utils::simple_initatior_socket<HvEco>作为类内字段的类型? -
@Maël Nison 问题是:在尝试使用模板中的 HvEcu 类型初始化initiator_socket 之前,HvEcu 类声明未完成
标签: c++ compiler-errors g++ systemc