2016-05-29 104 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; 
} 
相關問題