我有两个班,从两个不同的库,具有相同的含义:新增转换构造而不触及类
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类定义的情况下添加转换构造函数(或实现相同的结果)?
你叫如上拷贝构造函数是什么(*您提出了一个可能的解决方案*)在这种情况下,实际上是一个转换构造函数而不是复制构造函数。 – 2013-03-28 09:35:58
编写一个将'A'作为输入并返回'B'的函数? – juanchopanza 2013-03-28 09:36:42
你有控制功能吗?如果是这样,如果到'A'和'B'的接口是相同的,你可以使它们成为'template'函数。 – hmjd 2013-03-28 09:37:51