[英]Undefined symbols for architecture x86_64: c++
我在 xcode 架构 x86_64 的未定义符号中收到错误:“Restaurant::Restaurant()”,引用自:main.o ld 中的 _main:找不到架构 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;
}
请帮忙。
class Restaurant {
Restaurant() = default;
...
};
将为您提供餐厅的默认构造函数。
您声明了以下方法:
Restaurant();
int getTables();
int getTempStaff();
int getPermStaff();
string getShifts();
string getMenu(string menu);
.. 并且您已经在下面定义了Restaurant::getMenu
。 这里的问题是,虽然您已经声明了Restaurant::Restaurant
(构造函数),但您还没有定义它。
但是对于Restaurant::getShifts
确实如此,为什么您也没有收到错误消息?
这是因为在创建该类型的对象时会自动调用构造函数,如下所示:
//..
Restaurant mimmos;
//..
. 您实际上永远不会尝试调用Restaurant::getShifts
(或其他非构造函数方法),因此没有错误。
您可以将构造函数定义为默认构造函数(这允许您的编译器为您制作一个合理的构造函数),正如其他回答者所说,或者您可以定义自己的构造函数,这似乎是您想要做的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.