2016-02-23 31 views
0

我已經創建了一個簡單的基於模板的類。現在我正在嘗試寫一個流式閱讀器&作家。我只想要一個指向流中數組的指針。但它不起作用。 我使用VS2015指向轉發宣告的模板類

////////////////////////////Array.h 
#include "Stream.h" 

template<typename... Types> class TArray {}; 

template<typename T0> class TArray<T0> 
{ 
    friend Stream& << (Stream& stream, const TArray& arr) 
    { 
     ... 
    } 
    ... 
} 


///////////////////////////////Stream.h 
class Stream 
{ 
public: 
    class TArray<char>* mArray; //ERROR, it dose not work 
} 
+0

您需要在Stream.h文件中轉發declare TArray模板類。 –

+0

模板類TArray {...} 不是一個具體的類,並且不會生成任何機器碼。 TArray 是一個,mArray聲明的正確語法應該是: ... TArray * mArray; ... 朋友函數是類中的聲明而不是定義。 – Shooter

回答

0
template< typename T0 > class TArray 
{ 
    friend Stream& << (Stream& stream, const TArray& arr) 
    { 

聲明任意T0類模板。 或者:

template<> class TArray<T0> 
{ 
    friend Stream& << (Stream& stream, const TArray<T0>& arr) 
    { 

申報較早特定類T0聲明模板的規範。 T0肥大已知已定義的類,例如你的情況下的字符。