extended initializer lists only available with

У меня есть этот код

И компилятор дал мне это предупреждение за объявление объекта slot1 в закрытом разделе класса Moveset.

Хотя это дало мне предупреждение, но, видимо, это не повлияло на работу программы. Это на самом деле влияет на что-нибудь? и что я тут не так делаю?

Редактировать: И какова разница между инициализатором статического члена и инициализатором нестатического члена?

Решение

Компилятор, вероятно, допускает это как расширение, это на самом деле не разрешено в старых стандартах C ++.

Или инициализируйте объект через список инициализатора конструктора, или включите C ++ 11, используя флаги, которые сообщает вам компилятор.

Пример использования списка инициализации конструктора:

Вы, кажется, используете > какой-то, поэтому я не знаю, как добавить флаги, но обычно где-то в настройках проекта есть вкладка для компилятора и его настроек, где вы можете добавить флаги (если флажок отсутствует для C ++ 11 уже), просто добавьте -std=c++11 там.

Другие решения

Редактировать: И в чем разница между инициализатором статического члена и инициализатором нестатического члена?

Не сильно отличается.
Инициализатор для инициализации static member является статическим инициализатором члена.
Инициализатор для инициализации не static member является нестатическим инициализатором члена.

I’m very new to C++ and I’m having trouble reading my errors I was able to eliminate most of them but I’m down to a few and I’m request help on them please.

Here is the program

1 Answer 1

This style of initialisation, using braces:

was introduced to the language in 2011. Older compilers don’t support it; some newer ones (like yours) only support it if you tell them; for your compiler:

However, this form of initialisation still isn’t valid for arrays created with new . Since it’s small and only used locally, you could declare a local array; this doesn’t need C++11 support:

This also has the advantage of fixing the memory leak — if you use new to allocate memory, then you should free it with delete when you’ve finished with it.

If you did need dynamic allocation, you should use std::vector to allocate and free the memory for you:

Beware that your version of GCC is quite old, and has incomplete support for C++11.

Доброго времени суток, практикуюсь в работе с массивами в C++. Вообщем выдает следующее предупреждение:

prg.cpp: In function ‘int main()’:
prg.cpp:9:11: warning: extended initializer lists only available with -std=c++11 or -std=gnu++11 [enabled by default]
int num[8]

using namespace std;

1, 5, 4, 2, 7, 2, 1, 3

while (a Вопрос задан более трёх лет назад

  • 546 просмотров
  • Оцените статью