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++ Übungsprojekt

    Kö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.


Anmelden zum Antworten