读书人

构造函数赋值出错,该怎么处理

发布时间: 2012-05-04 12:36:09 作者: rapoo

构造函数赋值出错
#include< iostream >
using namespace std;
class array
{
private:
short array1[40],array2[40],array3[41];
public:
array()
{
array1[40]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0};
array2[40]={1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0,1,2,3,4,5,6,7,8,9,0};
array3[41]={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};

}
void inputHugeInteger()
{
cout<<"输入四个整数array1[]的数组:";
for(int i = 0;i < 40;i++)
{

cin>>array1[i];
}
cout<<"输入四个整数array2[]的数组:";
for( i = 0;i < 40;i++)
{
cin>>array2[i];
}
for(i=0;i<41;i++)
{
array3[i]=0;
}
}
void outputHugeInteger()
{
if((array1[3]+array2[3])>9)
{
for(int j = 0;j < 41;j++)
cout<<array3[4-j];
cout<<endl;
}
else
{
for(int j = 0;j < 40;j++)
cout<<array3[3-j];
cout<<endl;
}

}
void addHugeIntegers()
{
int temp;
for(int k=0;k<40;k++)
{
temp=array1[k]+array2[k];
array3[k]=temp%10;
array3[k+1]=temp/10;
}

}
void substractHugeIntegers()//array1[i] - array2[i]
{
for(int i = 0;i < 40;i++)
{
if(array1[i]<array2[i])
{
if(array1[i+1]==0)
{
array1[i]+=10;
array1[i+1]=9;
int m=1;
while(array1[i+1+m]==0&&(i+1+m)<40)//当array1[i+1+m]!=0时有错
{
array1[i+1+m] = 9;
m++;
array1[i+1+m]--;
}
}
else
{
array1[i]+=10;
array1[i+1]--;
}
}
array3[i]=array1[i]-array2[i];
}

}
};
int main()
{
array();
array c1;
c1.inputHugeInteger();
c1.substractHugeIntegers();
c1.outputHugeInteger();
return 0;
}





--------------------Configuration: 40个元素的数字数组 - Win32 Debug--------------------
Compiling...
40个元素的数字数组.cpp
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(10) : error C2059: syntax error : '{'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(10) : error C2143: syntax error : missing ';' before '{'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(10) : error C2143: syntax error : missing ';' before '}'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(11) : error C2059: syntax error : '{'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(11) : error C2143: syntax error : missing ';' before '{'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(11) : error C2143: syntax error : missing ';' before '}'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(12) : error C2059: syntax error : '{'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(12) : error C2143: syntax error : missing ';' before '{'
E:\软件工程\C++\C++课堂作业\18\40个元素的数字数组.cpp(12) : error C2143: syntax error : missing ';' before '}'
执行 cl.exe 时出错.




这是为什么?



[解决办法]
http://topic.csdn.net/t/20020505/08/698861.html
[解决办法]
array1,array2用循环赋值,自己找一下规律。
array3用memset函数,
[解决办法]
构造函数中的不是初始化,是赋值。

赋值是不能用{}赋值数组的
[解决办法]
楼主,换本好点的教材吧。
数值不可以这么初始化的。
[解决办法]
构造函数{}内部=语句相当于赋值,而不是初始化!!!,初始化只能在构造函数初始化列表中进行Constrator:初始化列表{相当于赋值},但是由于array1、array2、array3又是数组类型,你根本上不能放到初始化列表中进行初始化,我们只能在{}中用循环语句对其进行赋值!!


[解决办法]

其实和教材也有关系的,毕竟大学里面的老师很多也并不是很明白这些问题,只有通过书籍和网络自己去挖掘了!

读书人网 >C++

热点推荐