Добрый день!
Есть два класса - CoordinateSystem и ProjectProperties. Оба унаследованы от QObject.
projectproperties.hC++ (Qt)
#include <QObject>
class CoordinateSystem;
class ProjectProperties: public QObject{
Q_OBJECT
public:
ProjectProperties(QObject *parent = 0);
~ProjectProperties();
public slots:
CoordinateSystem* coordinateSystem()const {return curCoordinateSystem;}
void setCoordinateSystem(const CoordinateSystem &newCoordinateSystem);
private:
CoordinateSystem* curCoordinateSystem;
};
projectproperties.cppC++ (Qt)
#include "coordinatesystem.h"
#include "projectproperties.h"
ProjectProperties::ProjectProperties(QObject *parent): QObject(parent)
{
curCoordinateSystem = new CoordinateSystem(this);
}
void ProjectProperties::setCoordinateSystem(const CoordinateSystem &newCoordinateSystem)
{
*curCoordinateSystem = newCoordinateSystem; //TRUBLE
}
coordinatesystem.hC++ (Qt)
#include <QObject>
class CoordinateSystem : public QObject{
Q_OBJECT
public:
CoordinateSystem(QObject *parent = 0);
~CoordinateSystem();
QString name() const {return curName;}
void setName(const QString &newName);
signals:
void nameChanged();
private:
QString curName;
};
coordinatesystem.cppC++ (Qt)
#include "coordinatesystem.h"
CoordinateSystem::CoordinateSystem(QObject *parent): QObject(parent)
{
}
CoordinateSystem::~CoordinateSystem()
{
}
void CoordinateSystem::setName(const QString &newName)
{
curName = newName;
emit nameChanged();
}
main.cppC++ (Qt)
#include <QtCore>
#include <QCoreApplication>
#include "coordinatesystem.h"
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
ProjectProperties properties = new ProjectProperties();
return a.exec();
}
При компиляции выдается сообщение об ошибке
projectproperties.cpp: In member function `CoordinateSystem& CoordinateSystem::operator=(const CoordinateSystem&)':
c:/Qt/4.5.0/include/QtCore/../../src/corelib/kernel/qobject.h:302: error: `QObject& QObject::operator=(const QObject&)' is private
projectproperties.cpp:44: error: within this context
Знаю, что у QObject оператор = и конструктор копирования объявлены в private секции.
Так вот собственно вопрос. Как правильно создать наследника QObject, чтобы подобный код заработал?