2015-12-07 1 views
-1

мне нужно создать экземпляр и добавить к QVector указателей на мои объектыкак экземпляр и добавить к QVector указателей на мои объекты

Мой заголовок говорит QVector<Stuff*> myResults;

комментируя материал из Я сузили его до моего использования QVector

1) когда я пытаюсь

myResults.append(stuff); 

2), и когда я пытаюсь

myResults.push_back(stuff); 

я

First-chance exception at 0x00007FF652523520 in LibTestd.exe: 0xC0000005: Access violation reading location 0x0000000000000030.

Я скопировал и вставил различные способы создания экземпляров моего QVector безрезультатно. В том числе пример из doc.qt.io с 0 и с 50 QVector<Stuff> vector(0);

Я попытался сделать тип класса в QVector не указателем и разыменованным материалом.

Я действительно не знаю, что происходит не так, но я уверен, что это связано с моим неправильным использованием указателей. Может кто-нибудь дать какие-то ... указатели? : P

Кстати, в случае, если это уместно, блок материал перевода (которым я имею в виду, файлы Stuff.h и Stuff.cpp под тем же именем (это единица перевода имя)?) имеет два класса в нем, класс Crap и класс Stuff, материал не может существовать без дерьма. У меня есть списки инициализации в моем конструкторе, который так говорит.

также кстати, я создаю экземпляр вещи, как этот Stuff * stuff = new Stuff()

+1

Как точно определяются 'myResults'? 'QVector myResults;'? –

+0

Да я попробовал, что путь а также QVector myResults (а затем разыменованных вещи, когда я пытался что добавил его) – codeMetis

+0

(спасибо за давая мне знать об опечатке на вопрос, плохо исправить это) Я также попытался QVector myResults ; (а затем разыменованные вещи, когда я попытался это добавить) и QVector myResults (0); и QVector myResults (50); и попробовал myResults = myResults (QVector (50)) (не в заголовке) Ничего не работает, поэтому я думаю, что это связано с указателями, как он группирует память и пытается ли она копировать объекты, которые указываются к чему-то. – codeMetis

ответ

0

Без остального кода его трудно помочь, но .:

QVector не почтительное данные его заданной, поэтому проверить myResults переменные справедливость в время исполнения.

Да, я знаю, что это не указатель, а переменная уровня класса, проверьте его, особенно если вы используете processEvents() (или эквивалент) для любого потока, который может запускать деструктор вашего объекта.

Если вы обнаружили, что переменная myResults неверен (указывает на 0xFEEEFEEE + несколько больше в отладочных, и/или на «не умеет читать» память, проверьте, если деструктор объекта перспективе до нарушения прав доступа.

это является общим, что госзакупки новой или даже новичок в Qt использовать processEvents() и не пересмотрят, что слоты, которые приводят к разрушению их объекта могут выполняться во время processEvents() вызова.

0

супер массивная блондинка момент>.> Класс, который создает класс, который пытается использовать Qvector ... i aummm, забыл создать его экземпляр ..... * скрывает стыдно за то, как долго это путало меня * но yay! новые проблемы, которые нужно одурачить! все еще возникают другие проблемы.