Visual Studio 2019 年针对具有没有默认值的变量的结构发出警告

Visual Studio 2019 is raising warnings about structures having variables without default values

采用这个结构定义:

typedef struct tagReferenceMWB
{
    COleDateTime datStartDate;
    COleDateTime datEndDate;
    COleDateTime datFirstMonday;
    COleDateTime datLastMonday;
    CString      strFileMWB;
    WORD         wCount;
    bool         bReferenced;
    bool         bModified;

} S_REFERENCE_MWB;

VS2019 中的编译器发出警告:

Warning   C26495  Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::bModified' is uninitialized. Always initialize a member variable (type.6).    Meeting Schedule Assistant  d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h   348 
Warning   C26495  Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::bReferenced' is uninitialized. Always initialize a member variable (type.6).  Meeting Schedule Assistant  d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h   348 
Warning   C26495  Variable 'CChristianLifeMinistryDefines::tagReferenceMWB::wCount' is uninitialized. Always initialize a member variable (type.6).       Meeting Schedule Assistant  d:\my programs19\meetschedassist\meeting schedule assistant\christianlifeministrydefines.h   348 

由于我们不能在结构定义中分配默认值,我们如何解决这个问题?

更新

根据提供的答案中的评论,我检查了我的项目设置:

我的项目在 10 多年前就开始了,这个设置似乎是空的。我不知道这个留空的意义是什么?这些是我的选择:

将值更改为 C++14C++17 的重大影响是什么? IE。它会影响它可以 运行 在哪些操作系统上运行吗?

在 C++ 中,structclass 相同(默认访问修饰符除外)。您可以通过提供默认构造函数来分配默认值。如果您使用的是 C++11,您还可以对非静态、非常量 class 成员使用 in-class 初始值设定项,例如:

typedef struct tagReferenceMWB
{
    // ...
    WORD         wCount{ 0 };
    bool         bReferenced{ false };
    bool         bModified{ false };

} S_REFERENCE_MWB;

typedef struct tagReferenceMWB
{
    // ...
    WORD         wCount{};
    bool         bReferenced{};
    bool         bModified{};

} S_REFERENCE_MWB;