Apple Mach-O-Linker 错误:在体系结构 x86-64 中找不到从(行)引用的变量

Apple Mach-O-Linker Error: Variable referenced from (line) not found in architecture x86-64

本文关键字:引用 变量 找不到 错误 Mach-O-Linker x86-64 体系结构 Apple      更新时间:2023-10-16

我正在为一个类项目开发一个C++程序,我正在将对象数据从文件加载到列表中。我已经设置了它,以便像在成员函数中一样完成数据读取,然后将该对象推送到列表中,然后重复,直到没有更多数据要加载。

我收到此错误:

建筑x86_64的未定义符号:

"产品::P产品(Product const&(",参考自:

标准::__1::列表 ::p ush_back(product const&( in Week-2.o

LD:找不到建筑x86_64符号

clang:错误:链接器命令失败,退出代码为 1(使用 -v 查看调用(

主要功能:

Product temp;
list <Product> allProducts;
if (!temp.loadInitalData())
{
    cout << "There is no Product data available. Try a different option: ";
    cin >> choice;
    repeat = true;
}
else {
     while (temp.loadInitalData())
     {
         allProducts.push_back(temp);   //This is where I'm getting the error
     }
     temp.viewMenu();
     repeat = false;
}

产品的 loadInitalData(( 函数:

bool Product::loadInitalData()
{
    bool moreData = true;
    fstream prodDatabase;
    prodDatabase.open("ProductDatabase.csv", ios::out|ios::in|ios::binary);
    if (!prodDatabase)
    {
        cout << "File could not be successfully openedn";
        moreData = false;
    }
    else
    {
        moreData = loadInitialItemData(prodDatabase);
    }
    return moreData;
}

我已经在我的主文件中链接了"Product.h".cpp以及.有什么建议吗?

您缺少类 Product 的复制构造函数。 有一些关于编译器何时提供规则的规则,如下所述:

http://en.cppreference.com/w/cpp/language/copy_constructor

但是,如果复制 Product 对象是一项不平凡的操作,则无论如何都可能需要编写一个。

还可以考虑将您的列表设为产品列表(即指向产品的指针列表(。 这样可以避免复制,并且很可能是您真正想要的。