Передача вектора указателя во вставку
У меня есть два метода, которые я использую с 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);
}
Проблема возникает, когда я использую указатель вектора DIFF в методе PRINTN в строке:
inserter(diff,diff.begin()));
Сообщение об ошибке действительно длинное, но я думаю, что оно жалуется, потому что я пытаюсь передать вектор-указатель в функцию вставки. Когда я использую обычный объектный вектор, функция вставки работает сама по себе, но я получаю, что QObject является частной ошибкой. Есть ли способ заставить это работать с моей текущей структурой? Я пробовал пару разных вариантов, но они не работают из-за структуры QT. Я надеюсь, что объяснил все это ясно, но если вам нужно больше объяснений того, что я пытаюсь сделать, пожалуйста, дайте мне знать. Заранее спасибо.
1 ответ
Что является одним из наиболее важных требований для использования объектов с контейнером stl? Они должны быть копируемыми. Что является одним из наиболее важных ограничений объектов QObject? Не копируются. Я на самом деле не читал ваш код, но увидел "vector<>" и "QObject - частная ошибка"... больше информации не требуется.