在指针之间转换操作符

时间:2017-02-02 08:38:54

标签: c++ casting operator-overloading

鉴于我自己的结构类型X,是否可以定义隐式强制转换运算符,该运算符允许将X*隐式转换为其他类型,例如int*。虽然在引用之间进行转换很容易,但我找不到如何为指针执行此操作。像这样:

struct X {
    int theContent;

    operator int&(){ return theContent; }
    operator const int&() const { return theContent; }

}

int main(){
   X x;
   X* x2=&x;
   // this should work, but it doesn't
   int* i=x2;
}

1 个答案:

答案 0 :(得分:0)

您的X是标准布局类型。您可以简单地int* i=(int*)x2;或(reinterpret_cast)。

-

如果必须定义转换,那么可能是

operator int*() { return &theContent; }

所以你可以int* i=x;