以下代碼可正常工作。隱式轉換爲用戶定義類型
class A
{
private:
int _value;
public:
class AProxy
{
public:
AProxy(int num):_num(num){}
int _num;
};
A(AProxy x):_value(x._num){}
int getvalue(){
return _value;
}
};
void func(A a)
{
cout<<"A is initialized with "<<a.getvalue()<<endl;
}
int main()
{
A a(10);
return 0;
}
一個(10)被轉換爲(Aproxy(10))
然而,下面的代碼不工作。
class A
{
private:
int _value;
public:
class AProxy
{
class AAProxy
{
public:
AAProxy(int num):_aanum(num){}
int _aanum;
};
public:
AProxy(AAProxy aa):_num(aa._aanum){}
int _num;
};
A(AProxy x):_value(x._num){}
int getvalue(){
return _value;
}
};
void func(A a)
{
cout<<"A is initialized with "<<a.getvalue()<<endl;
}
int main()
{
A a(10);
return 0;
}
a(10)→a(Aproxy(AAproxy(10)))。那麼從int到用戶定義類型的隱式轉換隻發生一次?
你的兩個代碼段是相同的。這是怎麼回事? – 2012-03-19 17:52:03
你的代碼中沒有叫做'AAproxy'。也沒有隱式轉換運算符,你有什麼是轉換*構造函數*。 – Jon 2012-03-19 17:52:44
對不起。有一個複製粘貼錯誤。現在檢查代碼。 – vamsi 2012-03-19 17:53:49