型変換をカスケードするときに型変換を機能させるにはどうすればよいですか?
次のコードは単純なはずですが、TypeBからintへの変換では、コンパイラーが2つの型変換を自動的に推測する必要があります。しかし、そうではありません。
演算子int()const{returnval;を単純に実装することはできません。これはテンプレートクラスであると想定されているため、TypeBクラスで}どのタイプに変換するかわかりません。
class TypeA {
public:
TypeA( int a ) : val( a ) {}
operator int () const { return val; }
private:
int val;
};
class TypeB {
public:
TypeB( TypeA a ) : val( a ) {}
operator TypeA () const { return val; }
// operator int() const { return val; } // Explicit conversion to int which I can not know.
private:
TypeA val;
};
void main() {
TypeA a = 9;
TypeB b = a;
int int_a = a;
TypeA a2 = b;
int int_b = b; // Compilation error:
// No suitable conversion function from 'TypeB' to 'int' exists
}
よろしく