1
在我的C++代碼中,我有一個具有作爲私有成員的對映射的類,並且需要將這些對複製到一個新的載體,將在不同的類別(也是私人的)舉行。如果這些容器都在main()中,我可以很容易地使用copy(),但copy()對我的類不起作用。考慮到我的限制,最簡單的方法是什麼?如何將地圖內容從一個類複製到另一個類的新矢量中
在我的C++代碼中,我有一個具有作爲私有成員的對映射的類,並且需要將這些對複製到一個新的載體,將在不同的類別(也是私人的)舉行。如果這些容器都在main()中,我可以很容易地使用copy(),但copy()對我的類不起作用。考慮到我的限制,最簡單的方法是什麼?如何將地圖內容從一個類複製到另一個類的新矢量中
如果您有權訪問類定義,則可以創建一個特殊的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
等等。如果其他人創建代碼並將這些數據成員聲明爲私有的,那麼他們錯過了用例或者不應該觸及那些數據...
[Something smell。] (http://en.wikipedia.org/wiki/Code_smell) –