c++ 为什么提示我表达式必须包含类类型

题目是这样:题目描述定义一个Box(盒子)类,在该类定义中包括数据成员:length(长)、width(宽)和height(高);成员函数:构造函数Box,设置盒子长、宽... 题目是这样:

题目描述
定义一个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必须包含类类型啥意思啊 菜鸟看不懂 求大神指点
展开
 我来答
swordlance
推荐于2017-11-26 · TA获得超过1008个赞
知道小有建树答主
回答量:535
采纳率:75%
帮助的人:451万
展开全部

你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会影响到类实例的创建,为错误处理增加麻烦。

bolibei玻璃
2018-03-31 · TA获得超过1.3万个赞
知道小有建树答主
回答量:153
采纳率:95%
帮助的人:52.6万
展开全部
  1. 意思是你的 Test3 t();不能这么写,你这么写等于声明了一个函数t,它返回Test3的类型。

  2. 如果你想表达的是“定义一个Test3类型的变量,以它的默认构造函数”,那么去掉括号即可。

  3. 意思可能是你的Box a的初始化不对,a成了函数定义,定义函数a,返回类型是Box,接受三个整形参数 l,w,h。

  4. 正常初始化是 Box a(1,3,4), 不过看你的意思,你是要在构造函数里通过屏幕输入完成类构造,那么构造函数就不需要那三个参数了。

  5. 构造函数接受屏幕输入下的代码:

    #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;

    }

  6. 不过一般来说构造函数要尽快完成,在构造函数里io会影响到类实例的创建,为错误处理增加麻烦。

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
LYB661
2014-04-10 · TA获得超过314个赞
知道小有建树答主
回答量:232
采纳率:0%
帮助的人:75.5万
展开全部
构造函数、对象初始化有错误。如果想让构造函数更简单,可以使用默认参数。如:

Box(int i=200,int j=300,int k=240):l(i),w(j),h(k){}
构造函数一般不使用输入来初始化,创建对象时会有麻烦。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式