2017-03-18 3 views
0

Ich habe das folgende Codebeispiel mit zwei Vorlagenklassen, eine Basis und eine abgeleitet. Ich muss auf einen Typ in der Basisklasse von der abgeleiteten Klasse zugreifen, aber es sagt, dass es einen Typ nicht benennt. Warum ist das der Fall?Vererbung mit Vorlagen - Variable nennt keinen Typ

'Parameter' does not name a type 

using namespace std; 

template<typename PointT> 
class BaseClass{ 
public: 
    BaseClass(){} 

    class Parameter{ 
     Parameter(){} 
    }; 
}; 

template<typename PointT> 
class DerivedClass : public BaseClass<PointT>{ 
public: 
    DerivedClass(){} 

    class ParameterExtended{ 
     Parameter x; 
    }; 
}; 
+0

Typname Baseclass :: Parameter x; –

+0

wo füge ich das hinzu? – Raaj

+0

verwenden Sie es anstelle von 'Parameter x;' –

Antwort

0

Sie müssen dies:

typename BaseClass<PointT>::Parameter x; 
+0

dies scheint zu funktionieren. Außerdem kann ich nicht scheinen, auf irgendwelche Variablen von meiner Basisklasse entweder in der abgeleiteten Klasse zuzugreifen. sagt es nicht in diesem Bereich erklärt – Raaj

+2

@Raaj Vielleicht [das ist das Problem] (http://stackoverflow.com/questions/4643074/why-do-i-have-to-access-template-base-class-members- durch-den-dieser-Zeiger)? – PaulMcKenzie