我已经看到对类中的模板参数列表问题太少的一些响应,但是我在头文件中遇到类似的错误,其中声明似乎在名称空间级别。我根本不是一个C ++人,但是我想知道我需要在这个文件中纠正什么来防止关于typedef之后两行的跟随错误:
too few template-parameter-lists
这是一个文件经验
#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
谢谢!
答案 0 :(得分:3)
您需要
template<>
(http://ideone.com/ZWYuCd)对比两者:
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
以“选择”其他方法)