2017-03-18 13 views
0

次のコード例は2つのテンプレートクラスと1つの基本クラスと1つの派生クラスです。派生クラスから基本クラスの型にアクセスする必要がありますが、型に名前を付けないと言います。これはなぜですか?テンプレートとの継承 - 変数の型名はありません

'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

型名BaseClassの ::パラメータxを、 –

+0

どこに追加しますか? – Raaj

+0

代わりに 'パラメータx; 'を使用してください –

答えて

0

あなたはこの必要があります。

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

これは動作するようです。また、私は派生クラスのいずれか、私の基本クラスからの任意の変数にアクセスするように見えることはできません。この範囲で宣言されていないと述べています – Raaj

+2

@Raaj多分[これは問題です](http://stackoverflow.com/questions/4643074/why-do-i-have-to-access-template-base-class-members-スルーザザポインタ)? – PaulMcKenzie

関連する問題