【问题标题】:Apple Mach-O-Linker Error: Variable referenced from (line) not found in architecture x86-64Apple Mach-O-Linker 错误:从(行)引用的变量在架构 x86-64 中找不到
【发布时间】:2018-04-07 23:18:08
【问题描述】:

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

我收到此错误:

架构 x86_64 的未定义符号:

“Product::Product(Product const&)”,引用自:

std::__1::list ::push_back(Product const&) 在 Week-2.o

ld:未找到架构 x86_64 的符号

clang: error: 链接器命令失败,退出代码为 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 opened\n";
        moreData = false;
    }
    else
    {
        moreData = loadInitialItemData(prodDatabase);
    }
    return moreData;
}

我在 main.cpp 文件中链接了“Product.h”,以及 .有什么建议吗?

【问题讨论】:

    标签: c++ class reference linker-errors


    【解决方案1】:

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

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

    但如果复制 Product 对象是一项重要的操作,您可能仍需要编写一个。

    考虑让您的列表成为 Product * 的列表(即指向 Product 的指针列表)。这样可以避免复制,并且很可能是您真正想要的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-06-22
      • 2014-11-17
      • 1970-01-01
      相关资源
      最近更新 更多