请教大牛这个问题 error C2064: 项不会计算为接受 1 个参数的函数 没有合适的默认构造函数可用

程序是设计一个类用于对整数进行判别,并根据判断的结果分别统计所判断过的正整数和负

一直说我定义的构造函数的形参n有问题。。。

不明白这是怎么回事了。。。
>e:\assignment\c++\课本作业\aaaaaaaa\aaaaaaaa\xcxvc.cpp(13) : error C2061: 语法错误 : 标识符“n”
1>e:\assignment\c++\课本作业\aaaaaaaa\aaaaaaaa\xcxvc.cpp(23) : error C2512: “integer”: 没有合适的默认构造函数可用
1>e:\assignment\c++\课本作业\aaaaaaaa\aaaaaaaa\xcxvc.cpp(26) : error C2064: 项不会计算为接受 1 个参数的函数

#include<iostream>
using namespace std;
class integer
{private:
static int z,f;
int data;

public:
integer(int n) {data=n;if n>0 z++ else f++;}
int getzf(int& zheshu,int& fushu){zheshu=z;fushu=f;}
void print()
{cout<<"正数的个数为: "<<z<<endl;
cout<<"负数的个数为: "<<f<<endl;}
};
int integer::f=0;
int integer::z=0;
void main()
{int i,j,m;
integer aa[100];
cout<<"请输入要输入的个数m,和m个不为0的整数"<<endl;
cin>>m;
for (i=0;i<m;i++) {cin>>m;aa[i](m);}
aa[0].print();

}

改好的代码见下,具体错误可以自己比对后发现,都是些基本功。
有一点要强调一下,数组在定义的时候就要求初始化所有的元素了,不是像你想像的那样后面自己一个一个初始化的,所以你这样的代码(cin>>m; aa[i](m);)是不对的。

class integer
{
private:
static int z,f;
int data;

public:
integer(int n = 0) {data=n;if (n>0) z++; else f++;}
int getzf(int& zheshu,int& fushu){zheshu=z;fushu=f;}
void print()
{cout<<"正数的个数为: "<<z<<endl;
cout<<"负数的个数为: "<<f<<endl;}
};
int integer::f=0;
int integer::z=0;
void main()
{int i,m;
integer aa[100];
cout<<"请输入要输入的个数m,和m个不为0的整数"<<endl;
cin>>m;
for (i=0;i<m;i++) {cin>>m;aa[i] = integer(m);}
aa[0].print();
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2012-05-28
aa[i](m);构造函数是自动调用的,不能由你调用,integer aa[100];
你这儿创建对象时没有无参数的构造函数可以调用,你应该再加一个无参数的构造函数追问

谢谢你啊~不过加了无参的构造函数以后还是有下面的问题呢
1>e:\assignment\c++\课本作业\aaaaaaaa\aaaaaaaa\xcxvc.cpp(14) : error C2061: 语法错误 : 标识符“n”
1>e:\assignment\c++\课本作业\aaaaaaaa\aaaaaaaa\xcxvc.cpp(27) : error C2064: 项不会计算为接受 1 个参数的函数

这又是怎么回事呢?

相似回答