2012-02-06 96 views
2

我已經創建了一個模板類(TBase),它在其內部定義了另一個類(BaseUDT)。如何從派生類訪問模板基類中的用戶定義類型?

#pragma once 

template<class T> 
class TBase 
{ 
public: 
    class BaseUDT 
    { 
    public: 
     int a; 
    }; 
    T m_base; 
}; 

現在,我創建一個派生自TBase的類(TDerived)。

template<class T> 
class TDerived : public TBase<T> 
{ 
public: 
    T m_derived; 
    BaseUDT m_baseUDT; 
}; 

此代碼編譯在Visual Studio中,但是當我嘗試編譯它的Xcode在Mac機上,它拋出編譯錯誤。使用TBase :: BaseUDT也不起作用。

我一直在嘗試通過ISO C++文檔,但仍然沒有發現任何相關的東西。

回答

1

它的名字是依賴 - 這樣聲明:

template<class T> 
class TDerived : public TBase<T> 
{ 
public: 
    T m_derived; 
    typename TBase<T>::BaseUDT m_baseUDT; 
}; 
+0

它的工作原理。非常感謝。 – Anindo 2012-02-06 07:37:17

+0

@Anindo歡迎您 – justin 2012-02-06 07:46:41