我需要LPOLESTR
(长指针OLE字符串)作为一个简单函数调用的参数。
OLECHAR是一个Unicode字符(wchar_t) LPOLESTR是一串OLECHAR (OLECHAR*)
所以我应该可以这样做:
int demo(LPOLESTR ptName) {
return 1;
}
int main(){
demo(L"Visible");
}
但是我得到了一个编译错误:
(const Wchar_t8)L“可见” 类型"const wchar_t *“的参数与"LPOLESTR”类型的参数不兼容
或者我会尝试一个变量:
LPOLESTR lVis = L"Visible";
但是我得到了这个编译器错误:
(const Wchar_t8)L“可见” "const wchar_t *“类型的值不能用于初始化"LPOLESTR”类型的实体
我的#include <string>
在上面。
这似乎是一件简单的事情,但我整个上午都在谷歌上搜索,却找不到答案。如何在C++中创建LPOLESTR类型的变量或常量?
发布于 2018-07-04 10:41:44
您遇到的问题是,LPOLESTR
是wchar_t*
的typedef
。
编译器将不允许您在没有显式const wchar_t*
的情况下将wchar_t*
转换为const_cast
。
使用替代类型的LPCOLESTR
编写
LPCOLESTR lVis = L"Visible";
将修复即时编译错误,就像Windows程序员更喜欢的那样。
一般来说,使用const_cast
是不可取的,但是如果函数文档声明它不试图修改传递给它的数据,那么您就可以不使用它了。
https://stackoverflow.com/questions/51171664
复制相似问题