In diesem Codeabschnitt wird der Konstruktor von A ohne Parameter nicht vererbt? Gibt es eine spezielle Regel, die Erben von Konstruktoren ohne Parameter verhindert?
%Vor%clang ++ -std = c ++ 11 gibt diesen Fehler und g ++ -std = c ++ 11 gibt eine im Wesentlichen ähnliche Fehlermeldung:
%Vor%Die relevanten Informationen sind in 12.9 [class.inhctor] Absatz 3 (die Hervorhebung wird hinzugefügt):
Für jeden Nicht-Template-Konstruktor in der Kandidatenmenge geerbter Konstruktoren , außer einem Konstruktor ohne Parameter oder einem Copy / Move-Konstruktor mit einem einzelnen Parameter , wird ein Konstruktor implizit mit demselben Konstruktor deklariert Eigenschaften, es sei denn, es gibt einen user-deklarierten Konstruktor mit derselben Signatur in der vollständigen Klasse, in dem die using-Deklaration angezeigt wird. [...]
Das heißt, der Standardkonstruktor wird nur dann geerbt, wenn er ein [default] -Argument hat. Wenn sie ein Standardargument haben, werden sie vererbt, aber ohne das defaulted-Argument, wie ein Knoten im selben Absatz zeigt:
Hinweis: Standardargumente werden nicht vererbt. [...]
Grundsätzlich heißt das, dass Standardkonstruktoren nicht vererbt werden.
Es gibt keinen Konstruktor in B ohne Parameter, probiere
aus %Vor%Tags und Links c++ c++11 inheritance constructor