我在xcode中收到错误 架构x86_64的未定义符号: “餐厅::餐厅()”,参考自: _main在main.o中 ld:找不到架构x86_64的符号 clang:错误:链接器命令失败,退出代码为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;
}
请帮忙。
答案 0 :(得分:1)
class Restaurant {
Restaurant() = default;
...
};
将为您提供Restaurant的默认构造函数。
答案 1 :(得分:1)
您声明了以下方法:
Restaurant();
int getTables();
int getTempStaff();
int getPermStaff();
string getShifts();
string getMenu(string menu);
..您已在下面定义了Restaurant::getMenu
。这里的问题是,尽管您已经声明Restaurant::Restaurant
(构造函数),但您还没有定义它。
但是Restaurant::getShifts
这是真的,为什么你也没有得到错误呢?
这是因为在创建该类型的对象时会自动调用构造函数,如下所示:
//..
Restaurant mimmos;
//..
。你实际上最终没有尝试调用Restaurant::getShifts
(或其他非构造函数方法),所以没有错误。
您可以将构造函数定义为默认值(这允许您的编译器为您制作一个合理的构造函数),正如另一个答案者所说的那样,或者您可以定义自己的构造函数,这就是您似乎想要做的事情。