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

时间:2015-02-08 11:07:21

标签: c++ windows gcc

我是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);
}

2 个答案:

答案 0 :(得分:1)

undefined reference to x告诉您,您尚未定义函数x,但您尝试调用它。编译器是对的:

您尚未定义Widget构造函数。

如果您只想要一个空的构造函数,请将Widget();替换为Widget() {},如果您不需要用户定义的构造函数,则删除Widget();

答案 1 :(得分:0)

[已解决]我真的使用,CodeBlocks与GCC编译器,问题来自环境,当我关闭编辑器然后打开相同的项目然后编译它编译成功,我不知道发生了什么,  谢谢你的每一个身体