繁体   English   中英

体系结构 x86_64 的未定义符号:c++

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM