【问题标题】:QList of Custom Objects自定义对象的 QList
【发布时间】:2013-04-10 03:09:59
【问题描述】:

我正在尝试创建自定义对象的QList,但我无法这样做。我尝试这样做时收到的编译错误是:

error: symbol(s) not found for architecture x86_64 (file not found)

我能够创建自定义对象指针的QList,以及原始数据类型的指针。我知道QList 支持做我想做的事情,正如它在文档中所说的那样。

我使用的是 Mac OS X 10.7.5、Qt 5.0.1 和 Qt Creator 2.6.2。

代码:

QList<MyClass> my_list;

【问题讨论】:

  • 你是否包含了 MyClass.h ?
  • 也许您安装的是 32 位 x86 库而不是 x86_64?也许您没有将库放在 LD_LIBRARY_PATH 中?
  • MyClass 有没有你忘记实现的虚方法?或者你没有在它的源文件中声明的任何静态成员?
  • 问题是我在 MyClass 中定义了一个析构函数。一旦我将其注释掉,代码就会编译。我还没有测试它。有谁知道为什么这可能会导致 QList 出现此类问题?
  • 你必须向我们展示你的析构函数中有什么以及它是如何定义的。

标签: c++ qt qlist


【解决方案1】:

根据文档: QList 的值类型必须是可赋值的数据类型。

要符合条件,类型必须提供默认构造函数、复制构造函数和赋值运算符。所以你的自定义类应该是这样实现的。

class MyClass
 {
 public:
     MyClass() {}
     MyClass(const MyClass &other);

     MyClass &operator=(const MyClass &other);

 private:
     //private data members
 };

【讨论】:

  • +1 无论如何,因为它解决了我的问题。正如 QList 文档中所建议的那样,我存储指针以避免麻烦。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-20
  • 2011-04-08
  • 1970-01-01
  • 2016-10-08
  • 2020-05-16
  • 1970-01-01
  • 2011-04-14
相关资源
最近更新 更多