2014-11-13 123 views
1

請考慮以下設置。我有一個導入Windows Phone運行時組件的Windows Phone項目。該組件包含一個靜態庫。靜態庫是我在多個項目中使用的共享代碼。Windows Phone 8.0 C++成員初始化

如果我創建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項目?我的庫是非常大的,它將是一個非常不滿意的工作來改變所有的初始化。

+0

一個想法是將成員從一個簡單的bool更改爲一個自定義類型,該類型具有隱式轉換爲/從bool並將其自身初始化爲false。那麼你不需要在其他地方更改任何代碼 –

回答

1

不幸的是,定位手機8.0意味着您將使用v11平臺工具集。因此,您正在使用不支持此功能的VS2012編譯器。

可能能夠使用VS2013的v12編譯器將您的代碼編譯爲靜態庫,然後將其鏈接到針對手機8.0的骨架項目中(模運行庫中的差異)。

我有一些軼事證據證明它是成功的(v11編譯靜態庫鏈接到v12運行時組件),但該庫主要是C代碼。

+0

感謝您的信息。我今天會嘗試。 –

+1

因爲它旅行。似乎沒有辦法讓它在WP 8.0上工作。希望WP 10在出現問題時會得到廣泛的適應,所以問題不再存在。 –