Diamante de la muerte y operador de resolución de alcance (c ++)
Tengo este código (problema del diamante):
#include <iostream>
using namespace std;
struct Top
{
void print() { cout << "Top::print()" << endl; }
};
struct Right : Top
{
void print() { cout << "Right::print()" << endl; }
};
struct Left : Top
{
void print() { cout << "Left::print()" << endl; }
};
struct Bottom: Right, Left{};
int main()
{
Bottom b;
b.Right::Top::print();
}
quiero llamarprint()
enTop
clase.
Cuando intento compilarlo me sale un error:'Top' is an ambiguous base of 'Bottom'
en esta linea:b.Right::Top::print();
¿Por qué es ambiguo? Especifiqué explícitamente que quieroTop
deRight
y no deLeft
.
No quiero saber CÓMO hacerlo, sí, se puede hacer con referencias, herencia virtual, etc. Solo quiero saber por québ.Right::Top::print();
ambiguo.