提问者:小点点

体系结构X86_64:C++的未定义符号


我在xcode中获取体系结构x86_64的未定义符号中的错误:“Restaurant::Restaurant()”,引用自:main中的_main.o ld:找不到体系结构x86_64的符号clang:error:链接器命令失败,退出代码为%1(使用-v查看调用)

这是我的代码:

#include <iostream>
using namespace std;


class Restaurant
{
public:
    Restaurant();
    int getTables();
    int getTempStaff();
    int getPermStaff();
    string getShifts();
    string getMenu(string menu);
private:
    string Menu;
    int Tables;
    int TempStaff;
    int PermStaff;
    string Shifts[3];
};

string Restaurant::getMenu(string menu)
{
    Menu = menu;
    return menu;
}

int main()
{
    Restaurant mimmos;


    string Menu;
    cout<<"Menu: ";
    cin>>Menu;
    cout<<mimmos.getMenu(Menu);

    return 0;

}

请帮帮我。


共2个答案

匿名用户

您声明了以下方法:

Restaurant();
int getTables();
int getTempStaff();
int getPermStaff();
string getShifts();
string getMenu(string menu);

。。并且您已经在下面定义了。这里的问题是,虽然您已经声明了(构造器),但是您还没有定义它。

但是也是这样,为什么您没有发现错误呢?

这是因为当创建该类型的对象时会自动调用构造函数,如下所示:

//..
Restaurant mimmos;
//..

实际上,您从未尝试调用(或其他非构造函数方法),因此不会出错。

您可以像另一个回答者所说的那样,将构造函数定义为默认的(这允许您的编译器为您创建一个合理的构造函数),或者您可以定义自己的构造函数,这似乎是您无论如何都想要做的。

匿名用户

class Restaurant {

    Restaurant() = default;
    ...
};

将为您提供Restaurant的默认构造函数。

相关问题


MySQL Query : SELECT * FROM v9_ask_question WHERE 1=1 AND question regexp '(体系结构|x86_64|c++|未定义|符号)' ORDER BY qid DESC LIMIT 20
MySQL Error : Got error 'repetition-operator operand invalid' from regexp
MySQL Errno : 1139
Message : Got error 'repetition-operator operand invalid' from regexp
Need Help?