typedef出错:模板参数列表太少

时间:2013-10-25 20:27:54

标签: c++ c++11

我已经看到对类中的模板参数列表问题太少的一些响应,但是我在头文件中遇到类似的错误,其中声明似乎在名称空间级别。我根本不是一个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

谢谢!

1 个答案:

答案 0 :(得分: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以“选择”其他方法)