我是c++的新手,当我创建任何本地对象时,我在windows下使用GCC编译,编译器会发出错误消息"未定义的本地引用"我想创建如下代码所示的工厂函数错误消息:"未定义对`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);
}
undefined reference to x
告诉您尚未定义函数x
,但您正在尝试调用它。编译器是对的:
您尚未定义Widget
构造函数。
如果只需要一个空构造函数,请将Widget();
替换为Widget() {}
;如果不需要用户定义的构造函数,请删除Widget();
。
[SOLVED]我真的很用,CodeBlocks和GCC编译器,当我关闭编辑器然后打开同一个项目然后编译时,问题来自环境。它编译成功了,我不知道发生了什么,感谢每一个身体