c++ - 为什么我不能 const_cast 转换运算符的返回值?

标签 c++ const-cast

我有一个返回 const 指针的转换运算符,我需要对它进行 const_cast。但是,这不起作用,至少在 MSVC8 下是这样。以下代码重现了我的问题:

class MyClass {
public:
    operator const int* () {
        return 0;
    }
};

int main() {
    MyClass obj;
    int* myPtr;
    // compiles
    const int* myConstPtr = obj;
    // compiles
    myPtr = const_cast<int*>(myConstPtr);
    // doesn't compile (C2440: 'const_cast' : cannot convert from 'MyClass' to 'int *')
    myPtr = const_cast<int*>(obj);
}

这是为什么呢?这似乎违反直觉。谢谢!

最佳答案

要让它工作,你必须做:

myPtr = const_cast<int*>(static_cast<const int*>(obj));

当您直接进行 const_cast 时,编译器会查找转换为 int* 的运算符。

关于c++ - 为什么我不能 const_cast 转换运算符的返回值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1119375/

相关文章:

c++ - 如何获取对象的常量引用并使用该引用更改对象(使用 const_cast)?

c++ - const_cast 的奇怪行为

c++ - 强制外部函数为 const

c++ - 如何在 OpenGL 中使用 SDL2 软件渲染?

c++ - CUDA共享内存原子错误

c++ - 如何创建一个接受可变数量 int 的 C++ 构造函数

C++ const-cast 引用

c++ - 抛弃方法的常量性

c++ - vector 空 Push_back 在 '{' 标记之前调用预期的主表达式

c++ - 如何删除 setpixel 放在窗口上的内容? (c++)