Dies scheint nicht C++ 11 arbeiten in:C++ Delegieren Ctor und Eltern Ctor mit dem Argument
class B : public A
{
public:
B(const A& a)
: A(a) // parent constructor for passing the parameter
, B() // delegating constructor for init of other members
{};
// ...
};
gcc sagt mir, dass an initializer for a delegating constructor must appear alone
.
Wie kann ich den Konstruktor der Elternklasse mit dem Parameter aufrufen und den Basiskonstruktor der B-Klasse aufrufen? (Ich habe eine Reihe anderer Konstruktoren in B, die das gleiche Verhalten benötigen).
Momentan überlege ich, eine private B::init()
-Funktion zu schreiben und sie in allen Konstruktorfirmen zu verwenden, aber das schmeckt ein bisschen viel von C++ 03.
Was ist die bevorzugte Lösung?
Warum nicht in die andere Richtung schreiben? 'B :: B(): B (A {}) {}' und 'B :: B (const A & a): A (a), anderes_Member {} {}'. – Jarod42
@ Jarod42 Warum nicht eine Antwort anstelle eines Kommentars schreiben? – Barry
@Barry: Nicht sicher Wenn ich etwas nicht vermisse. – Jarod42