我有兩個班,從兩個不同的庫,具有相同的含義:新增轉換構造而不觸及類
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