级联类型转换时,如何获得类型转换才能工作?C++级联类型转换
下面的代码应该很简单,但是从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
}
问候