2013-10-25 77 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为“选择”的另一种方法)