如何在另一个类中复制类的对象

时间:2016-05-29 14:53:03

标签: c++ oop

我有A类和B类,我在B类对象类A中创建。 我的问题是如何使用讲师副本复制B类中的对象类A?

class B {
    A *obj;
    unsigned short room;
    unsigned short area;
public:
    B();
    B(const B&);
    ~B();
    void setRoom(unsigned short);
    void setArea(unsigned short);
    unsigned short getRoom() { return room; };
    unsigned short getArea() { return area; };
};

这是讲师副本:

B::B(const B&p)
{
    room = p.room;
    area = p.area;
    // A = ?!
}

另一个问题:如何在B类中设置和获取对象A?

//void setObj(A*);?
// A* getObj():?

由于

2 个答案:

答案 0 :(得分:4)

如果A有复制构造函数,您可以这样做:

B::B(const B& p)
{
    room = p.room;
    area = p.area;
    obj = new A(*(p.obj));
}

最好:

B::B(const B& p) : 
    obj(new A(*(p.obj))), room(p.room), area(p.area)
{ }

我希望您的析构函数~B();删除obj

B::~B()
{
    delete obj;
}

阅读Rule of ThreeRule-of-Three becomes Rule-of-Five with C++11?

答案 1 :(得分:1)

Kmeans.cluster_centers_[c]

使用以下格式设置对象。

How to set and get object A in class B?

使用以下

获取对象
void B::setAObj(A *aobj)
{
obj = aobj;
}