每当我编译这个程序,我得到一个错误说“太多类型声明中第13行”。我没有看到任何可能的语法错误,但还是我面对这个问题。
#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;
}
需要有终止的类定义一个分号:
} ; // semicolon needed here.
void currency::getdata( ...
否则,它看起来像这样的编译器:
class blahblah {int etc, etc1; int etc2; } void currency::getdata (...
在猜测,我会说问题的根源是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
两个返回类型,这可以解释的错误。
我猜你错过了类定义后以分号;类是不喜欢的功能,但类似结构用C定义,你需要把分号}
后。如:
class A {};
如果你结束类货币{之后加上分号";"
}你的程序将被编译,你会得到正确的输出。
class abc
{
...
};