我有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():?
由于
答案 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 Three和Rule-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;
}