2016-05-29 10 views
-4

クラス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():? 

Aは、コピーコンストラクタを持っている場合のおかげ

+5

インストラクターのコピーを使用して、オブジェクトを取得しますか? – LogicStuff

+0

"クラスBオブジェクトクラスAで作成しませんでした。クラスAが含む唯一のものは、クラスBのインスタンスの不確定数へのポインタです。 –

答えて

4

は、あなただけ行うことができます。

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

そして私はobjを削除~B();あなたのデストラクタを願っています:

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

?次の形式を使用して、オブジェクトを設定しRule of ThreeRule-of-Three becomes Rule-of-Five with C++11?

1
How to set and get object A in class B? 

上に読む

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

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

は、以下の

A* B::getAobj() 
{ 
return obj; 
} 
関連する問題