我有一个返回 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);
}
这是为什么?这似乎违反直觉。谢谢!