Probleme beim erben von Konstruktoren
-
Liebe Community
Ich habe ein kleines Problem mit Visual Studio.
Der Compiler scheint folgenden Code nicht zu akzeptieren. Eigendlich muss der
Code 100% korekt sein, weil er aus meinem Buch ist.template <typename T> class MathVektor : public Vektor<T> { public: using super = Vektor<T>; // Abkürzung für Oberklassentyp using Vektor<T>::Vektor; // Konstruktoren erben void init(T); // alle Elemente setzen // Operatoren MathVektor &operator*=(T); // Operator \tt{*=} // weitere Operatoren und Funktionen ... };
Der Compiler akzeptiert wohl nicht, dass ich die Konstruktoren aus Vector<T> erben möchte.
In Vector sind folgende Konstruktoren.
Vektor(size_t anzahl = 1); // Allg. Konstruktor Vektor(size_t n, T t); // 2. Allg. Konstruktor: n Elemente mit Wert t Vektor(std::initializer_list<T>); // Sequenzkonstruktor Vektor(const Vektor<T> &v); // Kopierkonstruktor
Er gibt dazu folgende Fehlermeldung:
Error 1 error C2886: 'Vektor<T>' : symbol cannot be used in a member using-declaration e:\programmierung\projekte\c++ übungsprojekt\c++ übungsprojekt\mvektor.h 14 1 C++ ÜbungsprojektKönnt ihr mir weiterhelfen?
Für eine kurze Antwort wäre ich sehr dankbar.Liebe Grüße
Sebastian Müller
-
Zumindest im VS2013 sind Inheriting constructors noch nicht verfügbar:
https://msdn.microsoft.com/en-us/library/hh567368.aspx
-
Der Code funktioniert auf Ideone: http://ideone.com/ERhHXu
Scheint ein Visual Studio-Problem zu sein. Kann das bitte jemand ins Compiler- und IDE-Forum verschieben?
-
Zufälligerweise benutzte ich VC 2013.
Ich denke, dass die Sache damit gelößt ist.
Danke für die Aufklärung.