У меня есть два класса, InputFile
и InputStream
. Оба наследуют QObject
и инициализируются макросом Q_OBJECT
.Вставка QObject * в QMap - невозможно инициализировать или передать указатель
InputFile
содержит QMap<int,InputStream*>
, создает InputStream
объекты и вставляет их в QMap
.
InputStream
инициализируется с явным конструктором, а затем вставляется в карту, как это:
InputStream myStream = InputStream(this, *myParameter);
_myMap.insert(myInt, *myStream);
Компилятор возвращает несколько ошибок в ссылке на мой вставки вызова:
/opt/Qt5.5.0/5.5/gcc/include/QtCore/qobject.h:461: error: 'QObject::QObject(const QObject&)' is private
Q_DISABLE_COPY(QObject)
^
/home/myusername/Documents/Projects/MyProject/inputfile.cpp:17: error: no match for 'operator*' (operand type is 'InputStream')
_myMap.insert(myInt, *myStream);
^
Я тогда попытался для инициализации InputStream
в качестве указателя:
InputStream *myStream = InputStream(this, *myParameter);
В этом случае компилятор возвращает следующую ошибку:
/home/myusername/Documents/Projects/MyProject/inputfile.cpp:16: error: cannot convert 'InputStream' to 'InputStream*' in initialization
InputStream *myStream = InputStream(this, *myParameter);
^
Я также пытался использовать ссылку (&
) в вызове вставки, но это по-прежнему возвращает первую ошибку.
Как я могу инициализировать свой объект по мере необходимости и вставить его в свой QMap
?
«Новое» ключевое слово решило его, спасибо. – Alexandre