同じ意味を持つ、2 つの異なるライブラリからの 2 つのクラスがあります。
class A {
public:
A() {}
A(const A&) {}
};
class B {
public:
B() {}
B(const B&) {}
};
オブジェクトB
を渡して、パラメーターとして関数を呼び出したい:A
void setB(const B&) {
}
int main(int argc, char* argv[]) {
A a;
setB(a);
}
以下から変換コンストラクターを追加することで、これが可能であることはわかっています。
class B {
public:
B() {}
B(const B&) {}
B(const A&) {} // CANNOT ADD THIS!
};
しかし、これらのクラスは 2 つの外部ライブラリで定義されており、それらを変更する権限がありません。
B クラスの定義に触れずに変換コンストラクターを追加する (または同じ結果を得る) にはどうすればよいですか?