我有两个类,来自两个不同的库,含义相同:
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!
};
但是这些类是在两个外部库中定义的,我无权更改它们。
如何在不触及 B 类定义的情况下添加转换构造函数(或达到相同的结果)?