C++自定义类中数组的初始化有关问题
C++自定义类中数组的初始化问题
刚接触C++,今天遇到个数组声名和初始化的问题,一直过不去,我简单叙述下
A.h 文件
class A
{
private:
const int a[3];
}
A.cpp 文件
A::a[3]={1,2,3}; //在这里一直报错error C2761: “const int A::a[3]”: 不允许成员函数重新声明
如果改成在类中初始化,如下
A.h 文件
class A
{
private:
static const int a[3]={1,2,3};
}
A.cpp 文件
...
在数组声名和初始化一行就一直报错
error C2059: 语法错误 : “{”
error C2334: “{”的前面有意外标记;跳过明显的函数体
不知道是哪里的问题,或者自己写类的话要怎样定义和初始化数组?请各位高手给解答下
------解决方案--------------------
#include<iostream>
using namespace std;
class Class
{
public:
static const int a[3];
};
const int Class::a[3] = {1, 2, 3};
int main()
{
Class clss;
cout<<Class::a[0]<<endl;
return 0;
}
------解决方案--------------------
记住静态成员这样初始化:
刚接触C++,今天遇到个数组声名和初始化的问题,一直过不去,我简单叙述下
A.h 文件
class A
{
private:
const int a[3];
}
A.cpp 文件
A::a[3]={1,2,3}; //在这里一直报错error C2761: “const int A::a[3]”: 不允许成员函数重新声明
如果改成在类中初始化,如下
A.h 文件
class A
{
private:
static const int a[3]={1,2,3};
}
A.cpp 文件
...
在数组声名和初始化一行就一直报错
error C2059: 语法错误 : “{”
error C2334: “{”的前面有意外标记;跳过明显的函数体
不知道是哪里的问题,或者自己写类的话要怎样定义和初始化数组?请各位高手给解答下
------解决方案--------------------
#include<iostream>
using namespace std;
class Class
{
public:
static const int a[3];
};
const int Class::a[3] = {1, 2, 3};
int main()
{
Class clss;
cout<<Class::a[0]<<endl;
return 0;
}
------解决方案--------------------
记住静态成员这样初始化:
- C/C++ code
class A { public: static const int a[3]; }; const int A::a[3] = {1,2,3};
------解决方案--------------------
改用vector:
- C/C++ code
class A { public: A(int * values, int size): a(values, values+size) { } private: std::vector<int const> a; }; int some[] = {1,2,3}; A a(some,3);