我想一些帮助解释这个phenomenom:为什么这段代码不起作用? (C++ OOP)公共继承
#include <iostream>
using namespace std;
class A
{
public:
void m() {cout<<"A::m "<<this<<endl;};
};
class B1: public A
{
public:
void m() {cout<<"B::m "<<this<<endl;};
};
class B2: public A ,public B1
{
};
class D : public B2
{};
int main()
{
B2 b;
D d;
A* a = &b; // Row 27
//error: a = &d; Base class 'A' is ambiguous // Row 28
return 0;
}
为什么代码在Row27工作,但在Row28犯规的代码? 提前致谢!我很想知道虚拟继承,我只是想知道Row27和Row28之间有什么区别 - 为什么一个抛出一个编译错误,而另一个不是?
http://en.wikipedia.org/wiki/Multiple_inheritance#The_diamond_problem – Pubby
它不适用于此,否则Row27也不起作用!第27行和第28行有什么区别? – YoniXw
你使用什么编译器?第27行不会在这里编译 –