Turbo C++ 编译错误 "too many types in declaration"

Turbo C++ compile error "too many types in declaration"

每当我编译这个程序时,我都会收到一个错误 "Too many types in decleration on line 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;

}

需要分号来终止class定义:

}  ;   // semicolon needed here.
void currency::getdata( ...

否则,编译器看起来像这样:

class blahblah {int etc, etc1; int etc2; } void currency::getdata (...

我猜测,根本问题是 class currency 正文后缺少分号。

回想一下在 C/C++ 中,您可以将对象定义为 class 或结构定义的一部分,如下所示:

struct foo
{
    int bar;
} FooObj;

这将创建类型为 struct foo 的变量 FooObj

所以在你的代码中,如下:

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 两个 return 类型,这可以解释错误。

我猜你错过了 class 定义后的分号; 类不像函数,而是类似于C中的struct定义,需要在}后面加一个分号。 如:

class A {};

如果你在结束 class currency{ } 后放一个分号 ";" 你的程序将被编译并且你会得到正确的输出。

class abc
{
   ...
};