在我的C ++代码中,我有一个类,它具有成对的映射作为私有成员,我需要将这些对复制到一个新的向量中,该向量将保存在不同的类(也是私有的)中。如果这些容器都在main()中,我可以使用copy()很容易地完成它,但是copy()不能在我的类上运行。鉴于我的约束,最直接的方法是什么?
答案 0 :(得分:0)
如果您有权访问类定义,则可以创建一个特殊的friend
函数,该函数可用于访问每个类的私有成员,并将私有成员从一个类复制到另一个类。
例如:
class B; //forward declaration
class A
{
private:
//... private data members
public:
//... methods, etc.
friend void copy(const A&, B&);
};
class B
{
private:
//... private data members
public:
//... methods, etc.
friend void copy(const A&, B&);
};
void copy(const A& rhs, B& lhs)
{
//... copy the private elements out of class A into class B
}
当然,如果你有权访问类定义,你可以做很多事情,包括向其中一个类添加一个简单的方法,将另一个类声明为friend
,等等如果其他人创建了代码并将这些数据成员声明为私有,那么要么他们错过了一个用例,要么你不应该触及那些数据......