gpt4 book ai didi

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

转载 作者:搜寻专家 更新时间:2023-10-31 00:05:56 25 4
gpt4 key购买 nike

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

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com