Проблема:
Это не имеет ничего общего с динамического распределения.
Вероятно, вы используете один из этих методов для инициализации членов данных, которые являются частью C++ 11:
class S
{
int n; // non-static data member
int& r; // non-static data member of reference type
int a[10] = {1, 2}; // non-static data member with initializer (C++11)
std::string s, *ps; // two non-static data members
struct NestedS {
std::string s;
} d5, *d6; // two non-static data members of nested type
char bit : 2; // two-bit bitfield
};
Source
Компилятор говорит вам, что вы используете функцию (не статические инициализаторы элементов данных), который существует только в C++ 11 (и выше).
Решение проблемы:
- Вы можете просто компилировать код с
-std=c++11
флагом.
- В качестве альтернативы, вы можете избежать использования этой функции, если по какой-либо причине вы хотите придерживаться более старого стандарта (например, C++ 98) (например, вы настроили таргетинг на какую-либо систему, где нет компилятора C++ 11).
Мне все равно?
Абсолютно, да. Отсутствие внимания к предупреждениям может привести ко многим проблемам, таким как переполнение и неопределенное поведение.
Помимо предупреждения, вам необходимо отправить код, который вызывает это. –
Какая часть «-std = C++ 11» неясна? –
Да, вы должны заботиться о предупреждении. И перед тем, как вслепую добавить флаг в команду компиляции, чтобы предупреждение исчезло, вы должны понять природу проблемы, о которой предупреждает ваш компилятор. –