实现指针的转换运算符

时间:2011-07-23 20:03:40

标签: c++ operators

问题很简单,但我找不到解决方案。

class foo
{
public:
    operator int()
    {
        return 5;
    }
};

foo* a = new foo();   
int b = a;

是否可以实现该行为?

2 个答案:

答案 0 :(得分:11)

你做不到。转换运算符需要是类的成员,但foo*不是用户定义的类类型,它是指针类型(此外,int b = *a也可以。)

你能做的最好的事情就是使用一个能够进行投射的效用函数。

答案 1 :(得分:0)

您可以通过明确调用运算符:

foo* a = new foo();
int b = a->operator int();