2016-05-29 169 views
-4

我有A类和B类,我在B类对象类A.创建 我的问题是如何将物体A类B类使用教练拷贝复制?如何复制一个类的对象在另一个类

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 = ?! 
} 

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

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

感谢

+5

导师复制对象? – LogicStuff

+0

你没有“创造在B类对象类A”。类A包含的唯一一个指向B类实例数目不确定的指针。 –

回答

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
How to set and get object A in class B? 

使用以下格式设置对象。

void B::setAObj(A *aobj) 
{ 
obj = aobj; 
} 

获得通过以下

A* B::getAobj() 
{ 
return obj; 
} 
相关问题