-2

我在b3类中继承了b1类和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();
}
4

3 回答 3

1

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

主功能
3.6.1.2
实现不应预定义功能。该功能不得重载。它应该有一个 int 类型的返回类型,否则它的类型是实现定义的。所有实现都应允许
- () 返回 int
的函数和 - (int, pointer to point to char) 返回 int 的函数

此外,你的课程b3应该有一个结尾;

于 2013-06-15T13:30:25.543 回答
1
main() {

C++ 要求所有函数,包括main,都具有返回类型。没有int像 C 中那样的“隐式返回类型”。此外,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 提到的,您的实现可能允许的不止于此,但无论如何您仍然需要返回类型。


此外,您在类定义;的末尾缺少 a :b3

class b3: public b1,public b2
{
    public:
    void display(){
        cout <<"its base class b3"<<endl;
    }
}; // <-- here
于 2013-06-15T13:30:58.770 回答
1

;在最后一个类定义中关闭。

于 2013-06-15T13:26:10.093 回答