2014-05-02 56 views
0

我在另一個類中有一個Node類,它在Structure類中是私有的,這是我正在使用的主類。然後我在另一個.cpp文件中實現了包含Structure類和嵌套在Structure類中的Node類的structure.h文件中的函數。你如何訪問另一個類中的內部類?

在創建Node *的返回類型時,如何訪問該Node類。一段時間我一直在搞這個,沒有什麼會起作用的。它允許我返回一個int,bool,double,但不是一個Node *。

"Structure.h" 
template <class T> 
class Structure 
{ 
    public: 
     // Structure functions(); 
    private: 

    class Node 
{ 
    public:: 
     // Node functions and variables; 
} 
    // Structure functions_private(); 
} 
+0

我也是爲了補充一點,我想在.cpp文件中的函數看起來像這樣:節點 *結構 :: function(x,y); – user3596926

+0

在類定義之外,您必須使用完全限定類型名稱,'typename Structure :: Node'。你可能不能把這個函數放在一個源文件中:http://stackoverflow.com/questions/495021。 –

+0

那麼我該如何去返回一個源文件中的結構 :: Node? – user3596926

回答

1

你的意思是這樣的:

template< class T > 
typename Structure<T>::Node* Structure<T>::MyMemberFunction() 
{ 
    return new Node(); 
} 

爲例。

此外,你需要把它放在你的頭文件不在源代碼中。

+0

不起作用,它給我像錯過的錯誤;之前*和T未申報 – user3596926

+1

您缺少'typename'。 –

+0

我有模板上面的功能 – user3596926

1

在類定義中,您可以簡單地將類型稱爲Node

之外,你所需要的合格的名字,與typename沿,如果它依賴於一個模板參數:

Structure<int>::Node * some_function(); // not dependent, no typename 

template <typename T> 
typename Structure<T>::Node * some_template(); // dependent, needs typename