我有一个返回 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/