2012-06-12 56 views
0

我有一個示例類,如果該類是特定類型的,我需要專門打印函數。 但是這根本不編譯。創建一個部分模板專精會引發錯誤

template <typename classType, int size> 
class MyVector 
    { 
    public: 
     classType* innerArray; 
     MyVector(){innerArray = new classType[size];} 
     ~MyVector(){delete[] innerArray;} 

     void push_back(classType val) 
      { 
      innerArray[0] = val; 
      } 

     classType& operator[](int index) 
      { 
      assert(index >= 0); 
      return innerArray[index]; 
      } 

     void Print() { 
      cout << "Printing Normal" << endl; 
      } 
    }; 

void MyVector<double>::Print() 
    { 
    cout << "Printing Double" << endl; 
    } 
+1

請附上編譯錯誤的副本的問題。 – 2012-06-12 00:28:45

+0

@Michael它說「構建失敗」。這是你想要的嗎??? –

回答

0

MyVector需要2個模板參數,例如,

void MyVector<double, 16>::Print() 
    { 
    cout << "Printing Double" << endl; 
    } 

,否則你需要爲第二個模板參數的默認值:

template <typename classType, int size = 16> 
class MyVector 
... 
+0

一個無關的問題,是否需要爲我在類之外定義的每個成員方法添加MyVector ?例如,如何在類外定義一個普通的Print()函數? – unj2

+0

@ kunj2aan如果你沒有專門的功能,那麼你只需要做'template void MyVector :: Print(){...' – Fraser