Turbo C ++编译错误“声明中的类型太多”

时间:2017-07-09 05:42:45

标签: c++ types turbo-c++

每当我编译这个程序时,我都会收到一条错误,上面写着“在第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;

}

the error

4 个答案:

答案 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
{
   ...
};