我使用的是動態分配的首次,而編譯器給了我這個警告,我無法找到其他地方:警告時動態分配內存
warning: non-static data member initializers only available with
-std=c++11 or -std=gnu++11
有沒有辦法讓它desappear?我應該在乎嗎? 謝謝!
我使用的是動態分配的首次,而編譯器給了我這個警告,我無法找到其他地方:警告時動態分配內存
warning: non-static data member initializers only available with
-std=c++11 or -std=gnu++11
有沒有辦法讓它desappear?我應該在乎嗎? 謝謝!
問題:
它無關動態分配。
您可能正在使用的這種方法的數據成員初始化它們是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
};
編譯器告訴你,你正在使用的功能(非靜態數據成員初始值設定項)只存在於C++ 11(及以上版本)中。
解決問題:
-std=c++11
標誌編譯代碼。我應該在意嗎?
當然,是的。不注意警告可能會導致許多問題,如溢出和未定義的行爲。
我對-std = C++ 11標誌一無所知,我會堅決使用它!謝謝! –
總是關心警告!警告是有用的,事實上,你應該總是編譯-Werror
。
,是警告你,你在預先C++編譯11,但在你的代碼使用的是C++ 11級初始化:
struct foo {
int i = 0; // initialization of non-static POD
};
你有-std=c++11
編譯,或停止使用該功能並在構造函數中初始化數據成員。
除了警告,你需要發佈代碼導致這一點。 –
「-std = C++ 11」的哪部分不清楚? –
是的,你應該關心警告。在爲編譯命令盲目添加一個標誌以使警告消失之前,您應該瞭解編譯器警告的問題的性質。 –