读书人

C++自定义类中数组的初始化有关问题

发布时间: 2012-09-14 23:00:49 作者: rapoo

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/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); 

读书人网 >C++

热点推荐