如何将地图的内容从一个类复制到另一个类的新矢量中

时间:2012-10-01 02:30:33

标签: c++

在我的C ++代码中,我有一个类,它具有成对的映射作为私有成员,我需要将这些对复制到一个新的向量中,该向量将保存在不同的类(也是私有的)中。如果这些容器都在main()中,我可以使用copy()很容易地完成它,但是copy()不能在我的类上运行。鉴于我的约束,最直接的方法是什么?

1 个答案:

答案 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,等等如果其他人创建了代码并将这些数据成员声明为私有,那么要么他们错过了一个用例,要么你不应该触及那些数据......