C++ C++;Xcode构造函数错误

C++ C++;Xcode构造函数错误,c++,xcode,C++,Xcode,我刚开始将我的项目转移到Xcode,当我尝试构建我的项目时,我在构造函数定义上遇到了错误。 在默认构造函数中,我得到“声明说明符后的预期成员名称或“;”,在另一个构造函数中,我得到: “应为“)” 字段的类型“Button::Button”不完整 非好友类成员“string”不能具有限定名称 #包括 #ifndef按钮 #定义按钮 名称空间接口1 { 类按钮 { 私人: std::字符串名; 浮动XPO; 浮动YPO; 浮动宽度; 浮动高度; 公众: //默认构造函数 按钮::按钮(); /

我刚开始将我的项目转移到Xcode,当我尝试构建我的项目时,我在构造函数定义上遇到了错误。 在默认构造函数中,我得到“声明说明符后的预期成员名称或“;”,在另一个构造函数中,我得到:

  • “应为“)”
  • 字段的类型“Button::Button”不完整
  • 非好友类成员“string”不能具有限定名称

  • #包括
    #ifndef按钮
    #定义按钮
    名称空间接口1
    {
    类按钮
    {
    私人:
    std::字符串名;
    浮动XPO;
    浮动YPO;
    浮动宽度;
    浮动高度;
    公众:
    //默认构造函数
    按钮::按钮();
    //具有id、x、y、宽度和高度参数的构造函数
    按钮::按钮(标准::字符串,浮点,浮点,浮点,浮点);
    //接球手和接球手
    std::string getName();
    float getX();
    无效setX(浮动);
    浮球();
    void setY(浮动);
    float getWidth();
    空隙设置宽度(浮动);
    float getHeight();
    空隙设置高度(浮动);
    布尔被选中(int,int);
    无效绘制(int,float,float,float,float);
    };
    }
    #恩迪夫
    

    知道出了什么问题吗?

    因为构造函数在类定义中,它们与其他成员函数一样,不需要
    按钮::
    前缀。有些编译器仍然接受额外的限定条件,有些则不接受

    class Button {
        Button(); //already in class scope, so no extra qualification needed
    };
    
    另一方面,当您在类之外定义这些成员时,确实需要限定条件。否则,它将生成一个新函数(至少对于具有返回类型的非构造函数):


    摆脱
    按钮::
    。谢谢。为什么我在visual studio中需要它,而不是xCode?你在VS中不需要它。这是VS中的解析错误(或功能,取决于你如何看待它)。不。不。这是VS中的错误。@chris:将你的评论作为答案。然后你可以得到你应得的第一票,OP可以接受,我们可以继续前进。
    class Button {
        Button(); //already in class scope, so no extra qualification needed
    };
    
    class Button {
        Button();
        void foo();
    };
    
    void foo(){} //new function, not Button::foo()
    void Button::foo(){} //definition of member function
    Button::Button(){} //definition of constructor