带有本地创建对象的gcc未定义引用

gcc undefined reference with local created Objects

本文关键字:gcc 未定义 引用 创建对象      更新时间:2023-10-16

我是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编译器,当我关闭编辑器然后打开同一个项目然后编译时,问题来自环境。它编译成功了,我不知道发生了什么,感谢每一个身体