次のコードは正常に動作します。ユーザー定義型への暗黙的変換
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(Aproxy(AAproxy(10))))。したがって、intからユーザー定義の型への暗黙の変換は、一度だけ発生しますか?
あなたの2つのコードは同じです。どうしたの? –
あなたのコードには 'AAproxy'と呼ばれるものは何もありません。暗黙の変換演算子もありません。変換演算子*はコンバート*です。 – Jon
申し訳ありません。コピー貼り付けエラーがありました。コードを確認します。 – vamsi