C++: Strange Inheritance scenario: public members with same name
Spanish version / Versión en Español Consider this code: #include <iostream> #include <string> using namespace std; class Grandpa{ public: Grandpa() : m_BothersomeField("Grandpa") {} virtual ~Grandpa(){} string m_BothersomeField; }; class Son: public Grandpa{ public: Son() : m_BothersomeField("Son") {} virtual ~Son(){} string m_BothersomeField; }; class Grandson: public Son{ public: Grandson(){} virtual ~Grandson(){} }; int main(){ Grandson n; cout << "Grandson, no disambiguation: " << n.m_BothersomeField << endl; cout << "Grandson, with disambiguation (Son): " << n.Son::m_BothersomeField << endl; cout << "Grandson, with disambiguation (Grandpa): " << n.Grandson::m_BothersomeField << endl; return 0; } Let's ignore for a while the fact that we have public fields (breaking enc...