2013-10-25 70 views
-2

我見過一些對類中太少的模板參數列表問題的反應,但我得到一個類似的錯誤在一個頭文件中聲明似乎是在名稱空間級別。我根本不是一個C++的人,但我想找出我需要在這個文件,糾正,以防止有關的typedef後兩線以下錯誤:錯誤與typedef:太少模板參數列表

too few template-parameter-lists 

這裏有一個文件experpt

#ifndef SH_AUDATA_H 
#define SH_AUDATA_H 

#include "BinaryIO.h" 
#include "AudioData.h" 

// AuMuLawAudioData 
typedef AudioDataImpl<AuMuLaw,BYTE> AuMuLawAudioData ; 
inline BYTE AuMuLawAudioData::readValue (BinaryIO* io) const { return (io->read8()) ; } 
inline void AuMuLawAudioData::writeValue (BinaryIO* io, BYTE v) const { io->write8(v) ; } 

#endif // ndef SH_AUDATA_H 

謝謝!

+1

是您'AudioDataImpl'類專業爲''? – xorguy

+0

沒有看到AudioDataImpl聲明沒有辦法告訴/ AudioData.h' –

+0

很好的問題。 AudioDataImpl的代碼是[linked here](http://tny.cz/fc125ac9)。它依賴於我在此處鏈接的AudioData類聲明(http://tny.cz/c53ca713)。 'AudioData'依賴於[CvrStgObject.h](http://tny.cz/9e20c334)。 – DudeGuy

回答

3

您可能需要

對比兩種:

template <typename T> struct X 
{ 
    T v; 

    void foo(); 
}; 

typedef X<int> SomeTypedef; 

#if 0 
    template<> void SomeTypedef::foo() { 
     // 
    } 
#else 
    template <typename T> void X<T>::foo() { 
     // 
    } 
#endif 


int main() 
{ 
    SomeTypedef a; 
    a.foo(); 
} 

這兩個方法來定義foo將工作(改變#if 0#if 1爲「選擇」的另一種方法)