我在 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();
}
答案 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