C++11的初始化列表的一个有关问题,编译异常
C++11的初始化列表的一个问题,编译错误
我在mingw9.0+GCC4.7编译:
////////////////////
D:\>g++ my.cpp
my.cpp:24:2: error: expected '{' before 'c2'
my.cpp:23:1: error: new types may not be defined in a return type
my.cpp:23:1: note: (perhaps a semicolon is missing after the definition of '<typ
e error>')
my.cpp: In function 'int c2(std::initializer_list<int>)':
my.cpp:25:7: error: only constructors take member initializers
my.cpp: At global scope:
my.cpp:27:1: error: expected declaration before '}' token
究竟错在哪里?
------解决方案--------------------
24: struct c2: c1 “{”
31: }“;”
- C/C++ code
#include<cstdio> #include<functional> #include<vector> #include<memory> using namespace std; struct s{ int i; s():i(22){printf("ctor\n");} s(const s&ss){i=ss.i;} s& operator=(const s&ss){i=ss.i;return *this;} }; struct a{ int i; int j; int k; }; struct c1{ int i; int j; int k; c1( std::initializer_list<int> list ){ } }; struct c2: c1 c2( std::initializer_list<int> list ) :c1( list ){ } }; struct is{ virtual void f()=0; } constexpr int GetFour(){ return 4; } int main(void){ vector<s> buf(3); for(s x:buf){ printf("%d\n",x.i); } const int i=2; char pc[i]; short ps[GetFour()]; a a1={1,2,3}; c2 obj{1,2,3}; return 0; }
我在mingw9.0+GCC4.7编译:
////////////////////
D:\>g++ my.cpp
my.cpp:24:2: error: expected '{' before 'c2'
my.cpp:23:1: error: new types may not be defined in a return type
my.cpp:23:1: note: (perhaps a semicolon is missing after the definition of '<typ
e error>')
my.cpp: In function 'int c2(std::initializer_list<int>)':
my.cpp:25:7: error: only constructors take member initializers
my.cpp: At global scope:
my.cpp:27:1: error: expected declaration before '}' token
究竟错在哪里?
------解决方案--------------------
24: struct c2: c1 “{”
31: }“;”