读书人

C++中关于定义构造函数时带有数组的一

发布时间: 2012-12-31 11:57:52 作者: rapoo

C++中关于定义构造函数时含有数组的一些困惑
看C++学习运算符重载时遇到的一个问题。刚才在尝试编写一个对于加号的重载函数以用于矩阵相加时发现,对于定义的默认构造函数中如果要对数组进行定义,无法直接定义,如a[2][3]={1,2,3,4,5,6}这样编译无法通过,对于这点感到很困惑。求各位高手解答。
#include"iostream.h"
class matrix
{
public:
matrix();
private:
int a[2][3];
}
matrix::matrix()
{
a[2][3]={1,2,3,4,5,6};
}
这样就不对,而把最后一句改为循环赋值即
for(int i=0;i<2;i++){
for(int j=0;j<3;j++){
a[i][j]=0;
}
}
就可以。求教!
[解决办法]
在c++标准中,类对象成员数组(static的除外)(初始化(扩展初始值设定列表)是不能直接初始化的
参考下:
http://hi.baidu.com/czlaner/blog/item/8bf439df69f3551b495403cc.html/cmtid/584df7ef87fcd9e0ce1b3ec3
static的可以
http://zhidao.baidu.com/question/250483870.html
或改为指针:
http://zhidao.baidu.com/question/38263251
但在c++0x中,就可以了


#include"iostream"
using namespace std;
class matrix
{
public:
matrix();
private:
int a[2][3];
};
matrix::matrix():a{{1,2,3},{4,5,6}}
{

}

main()
{
matrix m;
}


但目前,很少有完全支持c++0x的编译器,gcc可以
上面的程序用
g++ -std=c++0x -o t t.cpp
编译通过

读书人网 >C++

热点推荐