1

在我的 C++ 代码中,我有一个类,它有一个对的映射作为私有成员,我需要将这些对复制到一个新的向量中,该向量将保存在不同的类(也是私有的)中。如果这些容器都在 main() 中,我可以使用 copy() 轻松完成,但 copy() 不适用于我的课程。考虑到我的限制,最直接的方法是什么?

4

1 回答 1

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

于 2012-10-01T02:33:37.110 回答