每当我编译这个程序时,我都会收到一条错误,上面写着“在第13行的decleration中有太多类型”。我没有看到任何可能的语法错误,但我仍然面临这个问题。
#include<iostream.h>
#include<conio.h>
class currency
{
private:
int rupee,paise;
int total;
public:
void getdata(int r,int p);
void display();
}
void currency::getdata(int r, int p){
rupee=r;
paise=p;
total=r*100+p;
}
void currency::display(){
cout<<rupee<<" Rupees"<<" and "<<paise<<"Paise"<<endl;
cout<<"Converted value="<<total;
}
int main(){
currency c;
c.getdata(5,25);
c.display();
getch();
return 0;
}
答案 0 :(得分:3)
需要一个分号来终止类定义:
} ; // semicolon needed here.
void currency::getdata( ...
否则,编译器看起来像这样:
class blahblah {int etc, etc1; int etc2; } void currency::getdata (...
答案 1 :(得分:1)
猜测一下,我会说根本问题是在class currency
的主体之后缺少分号。
回想一下,在C / C ++中,您可以定义一个对象,如类或结构定义的一部分,如下所示:
struct foo
{
int bar;
} FooObj;
这会创建FooObj
类型的变量struct foo
。
因此,在您的代码中,以下内容:
class currency
{
/* ... */
}
void currency::getdata(int r, int p){
/* ... */
}
......等同于:
class currency
{
/* ... */
} void currency::getdata(int r, int p){
/* ... */
}
......这相当于:
class currency
{
/* ... */
};
currency void currency::getdata(int r, int p){
/* ... */
}
所以看起来你给了函数getdata
两个返回类型,这可以解释错误。
答案 2 :(得分:1)
我猜你在课程定义后错过了分号;
类与函数不同,但与C中的结构定义类似,您需要在}
之后加一个分号。
如:
class A {};
答案 3 :(得分:0)
如果您在结束班级货币{}之后输入分号";"
,您的程序将被编译,您将获得正确的输出。
class abc
{
...
};