2015-05-23 26 views
1

一個文件包含模板類A和模板類B. A是B的朋友。如何將模板類從它的朋友模板類分離到不同的頭文件中?

我想將它們分成不同的文件。如何處理它?

+0

你需要更具體。你是否打算每個例子'A '成爲每個「B 」的朋友?或者你只打算'A '是'B '的朋友,但是'A '不是(對於不同的'T'和'U')?你看,模板不是任何東西的朋友。模板的實例化。 – Peter

回答

0

#if !defined(FILE_A_H) 
#define  FILE_A_H 

template<class T> 
class A 
{ 
    template<class> friend class B; 

    // ... 
}; 

#endif 

了Bh

#if !defined(FILE_B_H) 
#define  FILE_B_H 

template<class T> class B { /* ... */ }; 

#endif 

請注意,如果是在朋友聲明中使用的類的名字尚未宣佈,但前進的聲明現貨(見http://en.cppreference.com/w/cpp/language/friend)。

進一步瞭解詳細:

+0

非常感謝! –

+0

我試過了你的想法。但它未能執行,並且編譯器給出錯誤「類B不能訪問類A的私有成員」。 –

+0

@LinXuelei [Here](http://ideone.com/ouRJUC)有一個簡單的例子(作爲朋友,'B'可以訪問'A'的私有成員)。你可以發佈你的代碼,並提供更多的細節? – manlio