我是c ++的新手,我在创建任何本地对象时在Windows下使用GCC编译,编译器发出错误消息" undefined local reference" 我想像下面的代码一样创建工厂函数 错误消息:"未定义对`Widget :: Widget()''"
的引用class Widget
{
public:
Widget();
virtual ~Widget();
int data() { return data_; }
void setData(int val) { data_ = val; }
protected:
private:
int data_;
};
Widget* createWidget()
{
Widget* w = new Widget();
return w;
}
int callSomething(Widget* widget,Signal* sig,int x)
{
return 0;
}
int main()
{
callSomething(createWidget(),createSignal(),4);
}
答案 0 :(得分:1)
undefined reference to x
告诉您,您尚未定义函数x
,但您尝试调用它。编译器是对的:
您尚未定义Widget
构造函数。
如果您只想要一个空的构造函数,请将Widget();
替换为Widget() {}
,如果您不需要用户定义的构造函数,则删除Widget();
。
答案 1 :(得分:0)
[已解决]我真的使用,CodeBlocks与GCC编译器,问题来自环境,当我关闭编辑器然后打开相同的项目然后编译它编译成功,我不知道发生了什么, 谢谢你的每一个身体