2014-11-13 4 views
1

Рассмотрите следующую настройку. У меня есть проект Windows Phone, который импортирует компонент Runtime для Windows Phone. Этот компонент включает статический lib. Статический lib - это общий код, который я использую в нескольких проектах.Инициализация члена Windows Phone 8.0 C++

Если я создаю библиотеку как статическую библиотеку 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 Project? Моя библиотека очень большая, и было бы очень неудовлетворительной работу по изменению всей инициализации.

+0

Одна мысль состоит в том, чтобы изменить член от простого bool до пользовательского типа, который имеет неявные преобразования в/из bool и инициализирует себя как false. Тогда вам не нужно менять код нигде больше –

ответ

1

К сожалению, адресный телефон 8.0 означает, что вы будете использовать набор инструментов платформы v11. Таким образом, вы используете компилятор VS2012, который не поддерживает это.

Вы может иметь возможность компиляции кода в статической библиотеки, используя v12 компилятор от VS2013, и связать, что в скелет проекта, направленного на телефон 8.0, хотя (по модулю различия в библиотеках во время выполнения).

У меня есть некоторые анекдотические доказательства того, что он был успешным наоборот (v11 скомпилировал статическую библиотеку, связанную с компонентом времени исполнения v12), но эта библиотека имела в основном код C.

+0

Спасибо за информацию. Я попробую это сегодня. –

+1

Как он гастролирует. Кажется, нет никакого способа заставить его работать на WP 8.0. Надеюсь, что WP 10 получит широкую адаптацию, когда он появится, поэтому проблема больше не сохраняется. –

Смежные вопросы