级联类型转换时如何使类型转换工作?
下面的代码应该很简单,但是从 TypeB 到 int 的转换需要编译器自动推导出两次类型转换。但事实并非如此。
我不能简单地实现 operator int() const { return val; 在 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
}
问候