问题很简单,但我找不到解决方案。
class foo
{
public:
operator int()
{
return 5;
}
};
foo* a = new foo();
int b = a;
是否可以实现该行为?
答案 0 :(得分:11)
你做不到。转换运算符需要是类的成员,但foo*
不是用户定义的类类型,它是指针类型(此外,int b = *a
也可以。)
你能做的最好的事情就是使用一个能够进行投射的效用函数。
答案 1 :(得分:0)
您可以通过明确调用运算符:
foo* a = new foo();
int b = a->operator int();