gpt4 book ai didi

c++ - C2664 : Explicit cast operator do not cast as expected

转载 作者:行者123 更新时间:2023-11-27 23:41:37 28 4
gpt4 key购买 nike

我的测试类 XString 有两个转换运算符。但是编译器不会为 fooA 使用显式转换 operator const wchar_t*()。为什么?

class XString
{
public:
operator const CString&();
explicit operator const wchar_t*();
};

void fooA(const wchar_t* s);
void fooB(const CString& s);

void test()
{
XString x;

CString c = x; //OK

fooA(x); //Error C2664: 'void fooA(const wchar_t *)': cannot convert argument 1 from 'XString' to 'const wchar_t *'

fooB(x); //OK
}

最佳答案

由于 operator const wchar_t*显式,转换不会隐式完成。这就是 explicit 的意义所在。

您可以使用 static_cast 强制转换:

fooA(static_cast<const wchar_t*>(x));

关于c++ - C2664 : Explicit cast operator do not cast as expected,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54342325/

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