我需要LPOLESTR
(长指针OLE字符串)作为简单函数调用的参数。
根据The Complete Guide to C++ Strings, Part II - String Wrapper Classes
OLECHAR是Unicode字符(wchar_t)
LPOLESTR是OLECHAR(OLECHAR *)的字符串
所以我应该能够做到这一点:
int demo(LPOLESTR ptName) {
return 1;
}
int main(){
demo(L"Visible");
}
但是我遇到了编译错误:
(const wchar_t [8])L“可见”
“ const wchar_t *”类型的参数与“ LPOLESTR”类型的参数不兼容
或者也许我会尝试一个变量:
LPOLESTR lVis = L"Visible";
但是我收到此编译器错误:
(const wchar_t [8])L“可见”
“ const wchar_t *”类型的值不能用于初始化“ LPOLESTR”类型的实体
我的顶部是#include <string>
。
这似乎应该是一件简单的事情,但是我整个上午都在谷歌搜索,找不到答案。如何在C ++中创建LPOLESTR类型的变量或常量?
答案 0 :(得分:5)
您遇到的问题是LPOLESTR
是typedef
的{{1}}。
编译器不允许您在没有显式wchar_t*
的情况下将const wchar_t*
转换为wchar_t*
。
使用替代类型const_cast
进行书写:
LPCOLESTR
可以解决立即编译错误,就像Windows程序员更喜欢Windows一样。
通常不建议使用LPCOLESTR lVis = L"Visible";
,但是如果功能文档指出它不尝试修改传递给它的数据,您将不使用它。