我需要 LPOLESTR(长指针 OLE 字符串)作为简单函数调用的参数。
根据 The Complete Guide to C++ Strings, Part II - String Wrapper Classes

所以我应该能够做到这一点:

int demo(LPOLESTR ptName) {
    return 1;
}

int main(){

    demo(L"Visible");
}
但我收到一个编译错误:

或者我会尝试一个变量:
LPOLESTR lVis = L"Visible";
但我收到此编译器错误:

我在顶部有 #include <string>
这似乎应该是一件简单的事情,但我整个早上都在谷歌上搜索并找不到答案。如何在 C++ 中创建 LPOLESTR 类型的变量或常量?

最佳答案

您遇到的问题是 LPOLESTRtypedefwchar_t*

如果没有显式 const wchar_t* ,编译器将不允许您将 wchar_t* 转换为 const_cast

使用替代类型 LPCOLESTR 编写:

LPCOLESTR lVis = L"Visible";

将修复即时编译错误,就像 Windows 程序员可能更喜欢的更像 Windows 一样。

通常,使用 const_cast 是不可取的,但如果函数文档指出它不会尝试修改传递给它的数据,那么您将逃脱它。

关于c++ - 如何创建 LPOLESTR 类型的变量或常量?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51171664/

10-11 16:56