Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/131.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/qt/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 两个QObject的赋值_C++_Qt_Constructor_Copy Constructor_Qobject - Fatal编程技术网

C++ 两个QObject的赋值

C++ 两个QObject的赋值,c++,qt,constructor,copy-constructor,qobject,C++,Qt,Constructor,Copy Constructor,Qobject,我有两个类名“mamad”和“student”,它们都是从我的类“Base”继承的 “基”继承自QObject 在学生课堂上,我有一个字段:“主题”是一个mamad 我有一个函数(setsubject),它接受一个newsubject并将newsubject复制到subject 但我有一个错误: "QObject& Qobject::operator=(const QObject)" is private ! "within this context" 我怎样才能修好它 这是我的ma

我有两个类名“mamad”和“student”,它们都是从我的类“Base”继承的 “基”继承自QObject

在学生课堂上,我有一个字段:“主题”是一个mamad 我有一个函数(setsubject),它接受一个newsubject并将newsubject复制到subject

但我有一个错误:

"QObject& Qobject::operator=(const QObject)" is private !
"within this context" 
我怎样才能修好它

这是我的mamad课程:

class mamad:public Base
{
   Q_OBJECT
   Q_PROPERTY(int id2 READ getId2 WRITE setId2)
   Q_PROPERTY(QString Name2 READ getName2 WRITE setName2)
public:
    mamad(Base* parent=0);
    int getId2() const { return id2; }
    void setId2(int newId) { id2 = newId; }
    QString getName2() const { return Name2; }

    void setName2(const QString &newName) { Name2 = newName; }
private:
    int id2;
    QString Name2;

};
这是我的学生课:

class student : public Base
{
    Q_OBJECT // Q_OBJECT macro will take care of generating proper metaObject for your class
    Q_PROPERTY(int id READ getId WRITE setId)
    Q_PROPERTY(QString Name READ getName WRITE setName)
    Q_PROPERTY(mamad subject  WRITE setsubject)

public:
    student(Base * parent=0);
    int getId() const { return id; }
    void setId(int newId) { id = newId; }
    QString getName() const { return Name; }
    void setName(const QString &newName) { Name = newName; }
   // mamad getsubject()const {return subject;}
    void setsubject( mamad newsubject) {subject=newsubject; }


private:
    int id;
    QString Name;
    mamad subject;
};
我必须说,我的getsubject函数也有这个问题,我不知道如何解决它


请,请,帮帮我

听起来好像默认情况下不应该复制
QObject
s。也许您最好编写一个
copy
函数,将所需参数从
newsubject
复制到
subject

Edit:(可能重复)表示更多,并表示只存储和复制指向
QObject
s的指针,而不是对象本身

例如,非常基本并且使用原始指针。建议使用或基于要求

class student : public Base
{
    ...
    void setsubject( mamad* newsubject) {subject=newsubject; }
    ...
    mamad* subject;
};

stud.setsubject(&mamadObj);

QObject
可以复制,因为它在错误消息中和错误消息中都清楚地说明了这一点


您必须使用
setsubject
作为克隆方法,即通过手动复制
mamad
s之间的字段来复制状态。

谢谢您的回答,但您能告诉我一个例子(指针)吗?谢谢。@ErfanTavakoli我不知道qt本身,但我已经添加了一个基本的例子来使用它。