2013-08-12 3 views
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); 
} 

Проблема возникает, когда я использую указатель вектора DIFF в методе PRINTN на линии:

inserter(diff,diff.begin())); 

сообщение об ошибке очень долго, но я думаю, что его жалуюсь, потому что я пытаюсь передать вектор указателя на функцию вставки. Когда я использую обычный вектор объекта, функция inserter работает сама по себе, но я получаю QObject как частную ошибку. Есть ли способ заставить меня работать с моей нынешней структурой? Я пробовал пару различных вариантов, но они не работают из-за структуры QT. Надеюсь, я объяснил это все четко, но если вам нужно больше объяснений о том, что я пытаюсь выполнить, пожалуйста, дайте мне знать. Заранее спасибо.

ответ

0

Что является одним из самых важных требований к использованию объектов с контейнером stl? Они должны быть скопированы. Что является одним из самых важных ограничений QObjects? Они не копируются. Я действительно не читал ваш код, но вижу «вектор <>» и «QObject - это частная ошибка» ... больше информации не требуется.

Смежные вопросы