我在QT中使用了两种方法。 PRINTR函数只打印来自COURSE对象的信息,PRINTN应该找到两个向量之间的差异并使用PRINTR打印结果。 PRINTR函数工作正常但我在使PRINTN工作时遇到问题:
void course::printr(vector<course*> c){
QString string1,string2;
for(int i = 0; i < (int)c.size();i++){
string1 = c[i]->getSubjectCourse();
string2 = c[i]->getTitle();
emit send(QString("%1\t%2").arg(string1).arg(string2));
}
}
当我尝试使用一个简单的对象向量时,我得到一个错误,说QObject是私有的,长达数十行。出于这个原因,我必须使用指针向量。
void course::printn(vector<course> a,vector<course> compA){
sort(a.begin(),a.end());
sort(compA.begin(),compA.end());
vector<course*> diff;
set_difference(a.begin(),
a.end(),
compA.begin(),
compA.end(),
inserter(diff,diff.begin()));
course().printr(diff);
}
当我在PRINTN方法中使用指针向量DIFF时出现问题:
inserter(diff,diff.begin()));
错误消息真的很长但我认为它抱怨因为我试图将指针向量传递给插入器函数。当我使用常规对象向量时,插入器函数自己工作但我得到QObject是私有错误。我有什么方法可以使用我目前的结构吗?我尝试了几种不同的变体但由于QT的结构它们不起作用。 我希望我已经清楚地解释了这一点,但如果你需要更多解释我想要完成的事情,请告诉我。提前致谢。
答案 0 :(得分:0)
使用带有stl容器的对象最重要的要求之一是什么?它们必须是可复制的。什么是QObjects最重要的限制之一?这是不可复制的。我没有真正阅读你的代码,但看到“vector&lt;&gt;”和“QObject是私有错误”......不再需要更多信息。