0

我有两种与 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 的结构,它们不起作用。我希望我已经清楚地解释了这一切,但如果您需要更多解释我想要完成的工作,请告诉我。提前致谢。

4

1 回答 1

0

将对象与 stl 容器一起使用的最重要要求之一是什么?它们必须是可复制的。QObjects 最重要的限制之一是什么?不可复制。我并没有真正阅读您的代码,但看到“vector<>”和“QObject 是私有错误”......不需要更多信息。

于 2013-08-12T19:00:53.470 回答