c++ 为什么提示我表达式必须包含类类型
题目描述
定义一个Box(盒子)类,在该类定义中包括
数据成员: length(长)、width(宽)和height(高);
成员函数: 构造函数Box,设置盒子长、宽和高三个初始数据;用函数volume 计算并输出盒子的体积。
在main函数中,要求创建Box对象,并求盒子的体积。
输入
输入为若干组数据,每一组数据用1行表示,为3个小于500的正整数,分别表示盒子的长、宽和高。
输出
输出为若干组数据,每一组数据用1行表示,为1个正整数,表示盒子的体积。
样例输入
1 2 3
2 3 4
样例输出
6
24
我的代码是:
#include<iostream>
using namespace std;
class Box
{ public:
Box(int l,int w,int h);
void volume();
int l,w,h;
};
Box::Box(int l,int w,int h)
{ cin>>l>>w>>h;
cout<<endl;}
void Box::volume()
{ cout<<l*w*h<<endl;
}
int main()
{ Box a(int l,int w,int h);
a.volume();}
最后一行报错说a,volume必须包含类类型啥意思啊 菜鸟看不懂 求大神指点 展开
你Box a的初始化不对,a成了函数定义,定义函数a,返回类型是Box,接受三个整形参数 l,w,h;
正常初始化是 Box a(1,3,4), 不过看你的意思,你是要在构造函数里通过屏幕输入完成类构造,那么构造函数就不需要那三个参数了。
构造函数接受屏幕输入下的代码:
#include<iostream>
using namespace std;
class Box
{
public:
Box();
void volume();
int l,w,h;
};
Box::Box()
{
cin>>l>>w>>h;
cout<<endl;
}
void Box::volume()
{
cout<<l*w*h<<endl;
}
int main()
{
Box a;
a.volume();
//Box::volume();
system("PAUSE");
return 0;
}
不过一般来说构造函数要尽快完成,在构造函数里io会影响到类实例的创建,为错误处理增加麻烦。
意思是你的 Test3 t();不能这么写,你这么写等于声明了一个函数t,它返回Test3的类型。
如果你想表达的是“定义一个Test3类型的变量,以它的默认构造函数”,那么去掉括号即可。
意思可能是你的Box a的初始化不对,a成了函数定义,定义函数a,返回类型是Box,接受三个整形参数 l,w,h。
正常初始化是 Box a(1,3,4), 不过看你的意思,你是要在构造函数里通过屏幕输入完成类构造,那么构造函数就不需要那三个参数了。
构造函数接受屏幕输入下的代码:
#include<iostream>
using namespace std;
class Box
{
public:
Box()
void volume();
int l,w,h;
};
Box::Box()
{ cin>>l>>w>>h;cout<<endl;}
void Box::volume()
{cout<<l*w*h<<endl;}
int main()
{ Box a;
a.volume();
//Box::volume();
system("PAUSE");
return 0;
}
不过一般来说构造函数要尽快完成,在构造函数里io会影响到类实例的创建,为错误处理增加麻烦。
Box(int i=200,int j=300,int k=240):l(i),w(j),h(k){}
构造函数一般不使用输入来初始化,创建对象时会有麻烦。