Betrachten Sie die folgende Strukturhierarchie:
%Vor% Das Kompilieren (mit clang
oder g++
mit -Woverloaded-virtual
) gibt mir eine Warnung:
Wenn ich jedoch I12
folgendermaßen ändere, kompiliert es unter clang
, während g++ -Woverloaded-virtual
immer noch eine Warnung ausgibt:
Wo liegt der Unterschied zwischen using I2::doit
und void doit(int) override = 0
? Naiverweise hätte ich gedacht, dass Ersteres ausreicht, um den Compiler zu informieren, dass mir bewusst ist, dass es zwei Versionen von doit
gibt.
Es beklagt sich, dass doit
in Derived
versteckt ist. Eine Lösung:
Tags und Links c++ virtual overloading hiding