我有一个Visual Studio 2019 C ++项目,该项目在一个头文件中具有此定义:
static const PWSTR s_rgComboBoxStrings[] =
{
L"First",
L"Second",
L"Third",
};
在这种情况下,将显示此错误:
a value of type "const wchar_t *" cannot be used to initialize an entity of type "const PWSTR"
那是为什么?如果我使用PCWSTR
而不是const PWSTR
会编译,但是问题是Windows SDK .h文件中存在相同的问题,因此修改Windows .h文件不是一个好主意。
奇怪的是,我有另一个项目具有完全相同的定义(因为我刚刚复制并粘贴了代码),并且该项目可以完美地编译。
我已经比较了项目设置,但看起来它们都是一样的。
我曾考虑过复制所有项目文件,然后根据我自己的项目要求重命名文件并进行更改,但是我想先找出该项目的问题。
问候 海梅
答案 0 :(得分:2)
假设我们沉重
typedef struct T * PT;
在这种情况下为const PT != const T*
,但为const PT == T* const
在此示例中可见
struct T
{
void operator++();
};
typedef struct T * PT;
void fn (const T* q)
{
const PT p = q;// (1) Conversion loses qualifiers
p++; // (2) you cannot assign to a variable that is const
*p = *q; // (3) ok
}