Здравствуйте, kov_serg, Вы писали:
_>_>struct A { int a; };
_>struct B : virtual A { int b; };
_>struct C : virtual A { int c; };
_>struct D : B,C { int d; };
_>
R>>Ну потому что поле "a" является членом класса A. И выражение &D::a имеет тип указателя на член класса А. И указатель на член класса A без проблем может быть использован с объектом класса D, как с наследником класса A. А почему должно быть по-другому?
_>Согласен, в c++ если можно сделать через ж... не единообразно то делают именно так.
Давай порассуждаем?
Легально ли такое использование, или его следует запретить?
D d{};
auto m = &A::a;
std::cout << d.*m << std::endl;