我有一个班级" RegistrationList"它保留了指向三种不同类型注册的指针列表。我有一个函数calculateFees(),它应该返回其中一种注册类型的总注册费用。我应该使用QT元对象系统检查列表中是否有特定类型的注册实例,但是当我运行程序时,我收到以下错误:
C:\ Qt \ Qt5.3.0 \ Tools \ QtCreator \ bin \ build-a2-q1-Desktop_Qt_5_3_0_MinGW_32bit-Debug \ debug \ moc_registrationlist.cpp:63:错误:' staticMetaObject'不是' QList'的成员 {& QList :: staticMetaObject,qt_meta_stringdata_RegistrationList.data, ^
我的calculateFees函数代码:
double RegistrationList::totalFees(QString t) {
double total = 0.00;
for (int i = 0; i <= this->size(); ++i) {
if (attendeeList.at(i)->metaObject()->className() == t)
total += this->at(i)->calculateFee();
}
return total;
}
答案 0 :(得分:2)
QList不是从QObject派生的。
第一个google结果&#34;错误:&#39; staticMetaObject&#39;不是&#34;的成员: Link
这就是说QTreeWidgetItem不继承自QObject,这意味着你自己的单一继承类也不会从QObject继承。继承QObject是使用Q_OBJECT宏的先决条件之一,如果你像我一样,你会自动插入到任何与Qt GUI相关的类中。
如果您未使用子类中的任何元对象内容,例如信号/插槽或属性,只需取出Q_OBJECT宏。如果您需要使用信号和插槽,您还需要使您的子类从QObject中继承多次继承。如果你采取这种方式,请记住&#34;多重继承要求QObject为第一个&#34;否则你将得到与上面相同的错误,或类似于&#34; YourClass继承自两个QObject子类&#34;来自moc。
将QTreeWidgetItem
替换为QList
,然后就可以了。