QTで使用している2つの方法があります。PRINTR 関数は COURSE オブジェクトから情報を出力するだけで、PRINTN は 2 つのベクトルの違いを見つけ、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 is private エラーが発生します。これを現在の構造で機能させる方法はありますか? いくつかのバリエーションを試しましたが、QT の構造が原因で機能しません。これをすべて明確に説明したことを願っていますが、私が達成しようとしていることについてさらに説明が必要な場合はお知らせください. 前もって感謝します。