-1
以下代碼不起作用。我不知道爲什麼。這與隱式/顯式有什麼關係?這是否稱爲轉換?編譯器錯誤嘗試調用轉換構造函數
#include <type_traits>
template<typename T>
class A {
public:
A(T x) {_x=x;}
template<typename T2> explicit A(const A<T2> &r) {}
template<typename T2> explicit A(A<T2> &r){}
template<typename T2>
void operator=(const A<T2>& rhs) { _x = rhs._x; }
template<typename T2>
void operator=(A<T2>& rhs) { _x = rhs._x; }
T _x;
};
int main() {
const A<int> a(10);
A<int> b = a;
b = A<int>(5);
A<int> c(a);
b(a); // not working. why?
}
錯誤:G ++ 6
test.cpp: In function ‘int main()’:
test.cpp:25:12: error: no match for call to ‘(A<int>) (const A<int>&)’
b(a); // not working. why?
它是如何工作的? – NathanOliver
編譯器錯誤。 –
你的拷貝構造函數不接受'const'參數。你也期望用'operator()'調用'b'? – tadman