Как добавить объект к QLIST?C++

Программы на C++. Форум разработчиков
Ответить
Anonymous
 Как добавить объект к QLIST?

Сообщение Anonymous »

Я пытаюсь создать список объектов, используя Qlist, но я получаю ошибку, когда пытаюсь добавить в список. Он работает, если я использую QString в качестве объекта, но не в том случае, если я использую TestClass. Это правильный способ сделать что -то? < /p>

#include
#include

#include "testclass.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QList test_list;

TestClass* test_1 = new TestClass;
test_1->test_varialbe = 1;
test_list.append(test_1);

TestClass* test_2 = new TestClass;
test_2->test_varialbe = 2;
test_list.append(test_2);

foreach(TestClass* t, test_list) {
qWarning() test_varialbe;
}

return a.exec();
}


main.cpp

#include

#include "testclass.h"

int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);

QList test_list;
TestClass test;
test_list.append(test);

return a.exec();
}
< /code>

testclass.h

#ifndef TESTCLASS_H
#define TESTCLASS_H

#include

class TestClass : public QObject
{
Q_OBJECT
public:
explicit TestClass(QObject *parent = 0);
int test_varialbe;

signals:

public slots:

};

#endif // TESTCLASS_H
< /code>

testclass.cpp

#include "testclass.h"

TestClass::TestClass(QObject *parent) :
QObject(parent)
{
}


ошибка

In file included from ../poo/main.cpp:3:
../poo/testclass.h:6:7: error: base class 'QObject' has private copy constructor
class TestClass : public QObject
^
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:691:9: note: in instantiation of member function 'QList::node_copy' requested here
node_copy(reinterpret_cast(p.begin()),
^
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:520:19: note: in instantiation of member function 'QList::detach_helper_grow' requested here
Node *n = detach_helper_grow(INT_MAX, 1);
^
../poo/main.cpp:11:15: note: in instantiation of member function 'QList::append' requested here
test_list.append(test);
^
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qobject.h:465:20: note: declared private here
Q_DISABLE_COPY(QObject)
^
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qglobal.h:1000:5: note: expanded from macro 'Q_DISABLE_COPY'
Class(const Class &) Q_DECL_EQ_DELETE;\
^
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:400:34: note: implicit copy constructor for 'TestClass' first required here
current->v = new T(*reinterpret_cast(src->v));
^
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:413:31: error: no matching constructor for initialization of 'TestClass'
new (current) T(*reinterpret_cast(src));
^ ~~~~~~~~~~~~~~~~~~~~~~~~~~
../poo/testclass.h:10:14: note: candidate constructor not viable: no known conversion from 'TestClass' to 'QObject *' for 1st argument; remove *
explicit TestClass(QObject *parent = 0);
^
In file included from ../poo/main.cpp:1:
In file included from ../Qt/5.3/clang_64/lib/QtCore.framework/Versions/5/Headers/QCoreApplication:1:
In file included from ../Qt/5.3/clang_64/lib/QtCore.framework/Versions/5/Headers/qcoreapplication.h:48:
In file included from /Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qobject.h:51:
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:373:69: error: no matching constructor for initialization of 'TestClass'
if (QTypeInfo::isLarge || QTypeInfo::isStatic) n->v = new T(t);
^ ~
/Users/waspinator/Qt/5.3/clang_64/lib/QtCore.framework/Headers/qlist.h:522:13: note: in instantiation of member function 'QList::node_construct' requested here
node_construct(n, t);
^
../poo/main.cpp:11:15: note: in instantiation of member function 'QList::append' requested here
test_list.append(test);
^
../poo/testclass.h:10:14: note: candidate constructor not viable: no known conversion from 'const TestClass' to 'QObject *' for 1st argument
explicit TestClass(QObject *parent = 0);
^
3 errors generated.
make: *** [main.o] Error 1
14:37:52: The process "/usr/bin/make" exited with code 2.
Error while building/deploying project poo (kit: Desktop Qt 5.3.0 clang 64bit)
When executing step 'Make'


Подробнее здесь: https://stackoverflow.com/questions/252 ... t-to-qlist
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C++»