我需要LPOLESTR(长指针OLE字符串)作为简单函数调用的参数.
OLECHAR是一个Unicode字符(wchar_t)
LPOLESTR是一串OLECHAR(OLECHAR*)
所以我应该能够做到这一点:
int demo(LPOLESTR ptName) {
return 1;
}
int main(){
demo(L"Visible");
}
Run Code Online (Sandbox Code Playgroud)
但我收到编译错误:
(const wchar_t [8])L"可见"
"const wchar_t*"类型的参数与"LPOLESTR"类型的参数不兼容
或者我可能会尝试一个变量:
LPOLESTR lVis = L"Visible";
Run Code Online (Sandbox Code Playgroud)
但我得到这个编译器错误:
(const wchar_t [8])L"可见"
"const wchar_t*"类型的值不能用于初始化"LPOLESTR"类型的实体
我#include <string>在顶部.
这似乎应该是一件简单的事情,但我整个上午一直在谷歌搜索,无法找到答案.如何在C++中创建LPOLESTR类型的变量或常量?
你的问题是,LPOLESTR是typedef的wchar_t*.
编译器不允许您在没有显式const wchar_t*的wchar_t* 情况下将a转换为a const_cast.
写作,使用替代类型LPCOLESTR:
LPCOLESTR lVis = L"Visible";
Run Code Online (Sandbox Code Playgroud)
将修复即时编译错误,就像Windows程序员更喜欢Windows和可能更喜欢的.
const_cast通常,使用a 是不可取的,但如果函数文档指出它不会尝试修改传递给它的数据,那么你将使用它.