【发布时间】:2026-01-02 03:25:02
【问题描述】:
考虑以下设置。我有一个导入 Windows Phone 运行时组件的 Windows Phone 项目。该组件包括一个静态库。静态库是我在多个项目中使用的共享代码。
如果我将 lib 创建为 Windows Phone 8.1 静态库,一切正常。当我尝试将库创建为 Windows Phone 8.0 项目时,我的成员初始化不起作用。我的成员定义如下:
MyClass{
private:
bool _myMember = false;
}
就像我提到的,这在 WP 8.1 上运行良好,但在 WP 8.0 上却失败了。 Visual Studio 打印以下错误消息:
Error 77 error C2864: 'MyClass' : only static const integral data members can be
initialized within a class <MyPath>\MyClass.h 141 1 MyLib
我知道成员初始化的内联样式是在 C++11 中添加的,而 Micosoft 最近才添加了此功能。 有没有人知道我是否可以让它适用于 Windows Phone 8.0 项目?我的库非常大,更改所有初始化将是一项非常不满意的工作。
【问题讨论】:
-
一种想法是将成员从简单的 bool 更改为自定义类型,该类型具有与 bool 的隐式转换并将其自身初始化为 false。然后你不需要在其他任何地方更改任何代码
标签: c++ c++11 windows-phone-8 windows-runtime initialization