在此函数的main函数中不需要void或int

时间:2013-06-15 13:22:27

标签: c++ main

我在 b3级中继承了 class b1 class b2

类b1和类b3具有相同的功能。

没有void或int编译但是它给出了错误

声明中的类型太多

#include<iostream.h>
#include<conio.h>

class b1{
    public:
    void display(){
        cout <<"class b1"<<endl;
    }
};


class b2{
    public:
    void display1(){
        cout <<"class b2"<<endl;
    }
};

class b3: public b1,public b2
{
    public:
    void display(){
        cout <<"its base class b3"<<endl;
    }
}

main(){
    b3 h;
    h.display();
    h.b1::display();
    h.b2::display1();
    getch();
}

3 个答案:

答案 0 :(得分:1)

在上一个班级定义中关闭;

答案 1 :(得分:1)

您可能正在使用具有奇怪扩展名的编译器。符合C ++标准N3485 3.6.1.2:

  

主要功能
  3.6.1.2
  实现不应预定义 main 函数。此功能不应过载。 它应该   返回类型为int类型,但其类型为实现定义。所有实现都应该   允许两个    - ()返回int和
的函数    - 函数(int,指向char的指针)返回int

此外,您的班级b3应该有一个结尾;

答案 2 :(得分:1)

main() {

C ++要求所有函数(包括main)都具有返回类型。在C中没有“隐式int返回类型”。此外,main只有两个可能的标准签名:

int main()

// or

int main(int argc, char** argv)
    // same as above, using another commonly found, equivalent syntax:
    int main(int argc, char* argv[])

正如@taocp所提到的那样,你的实现可能允许更多但仍然需要返回类型。


此外,您在;班级定义的末尾错过了b3

class b3: public b1,public b2
{
    public:
    void display(){
        cout <<"its base class b3"<<endl;
    }
}; // <-- here