私のC++コードには、プライベートメンバーとしてペアのマップを持つクラスがあり、それらのペアを別のクラス(これもプライベート)に保持される新しいベクトルにコピーする必要があります。これらのコンテナが両方ともmain()にある場合、copy()を使用して非常に簡単に実行できますが、copy()は私のクラスでは機能しません。私の制約を考えると、最も簡単なアプローチは何ですか?
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
}
もちろん、クラス定義にアクセスできる場合は、クラスの1つに単純なメソッドを追加したり、一方のクラスをもう一方のクラスに宣言したりするなど、さまざまなことができますfriend
。他の誰かがコードを作成し、それらのデータメンバーをプライベートと宣言した場合、ユースケースを見逃したか、そのデータに触れてはいけません...
于 2012-10-01T02:33:37.110 に答える