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

问题描述 投票:2回答:4

每当我编译这个程序,我得到一个错误说“太多类型声明中第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;

}

the error

c++ types turbo-c++
4个回答
4
投票

需要有终止的类定义一个分号:

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

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

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

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


1
投票

我猜你错过了类定义后以分号;类是不喜欢的功能,但类似结构用C定义,你需要把分号}后。如:

class A {};

0
投票

如果你结束类货币{之后加上分号";"}你的程序将被编译,你会得到正确的输出。

class abc
{
   ...
};
© www.soinside.com 2019 - 2024. All rights reserved.