2017-03-18 64 views
0

我有下面的代碼示例,有兩個模板類,一個基礎和一個派生。我需要從派生類訪問基類中的類型,但它說它沒有命名類型。爲什麼會這樣?模板的不友善 - 變量沒有命名一個類型

'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

相關問題