C++ typedef错误:模板参数列表太少
我已经看到一些对类中模板参数列表太少问题的响应,但是在一个头文件中,我得到了一个类似的错误,其中声明似乎位于名称空间级别。我不是一个C++的家伙,但我想找出我需要纠正什么在这个文件,以防止以下错误的两行后的TyPulf:< /P>C++ typedef错误:模板参数列表太少,c++,c++11,C++,C++11,我已经看到一些对类中模板参数列表太少问题的响应,但是在一个头文件中,我得到了一个类似的错误,其中声明似乎位于名称空间级别。我不是一个C++的家伙,但我想找出我需要纠正什么在这个文件,以防止以下错误的两行后的TyPulf:< /P> too few template-parameter-lists 这是一个文件摘录 #ifndef SH_AUDATA_H #define SH_AUDATA_H #include "BinaryIO.h" #include "AudioData.h" // A
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
\ifndef SH_AUDATA_H
#定义SH_AUDATA_H
#包括“Binaryo.h”
#包括“AudioData.h”
//奥穆拉瓦迪奥达酒店
typedef AudioDataImpl AuMuLawAudioData;
内联字节AuMuLawAudioData::readValue(BinaryIO*io)常量{return(io->read8());}
内联void AuMuLawAudioData::writeValue(二进制io*io,字节v)常量{io->write8(v);}
#endif//ndef SH_AUDATA_H
谢谢 你要么需要
- 指示您使用
模板
()定义模板成员
- 或者您应该只使用完整的限定类名()
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();
}
模板结构X
{
电视
void foo();
};
typedef X SomeTypedef;
#如果0
模板void SomeTypedef::foo(){
//
}
#否则
模板void X::foo(){
//
}
#恩迪夫
int main()
{
a型;
a、 foo();
}
定义
foo
的两种方法都会起作用(将#if 0
更改为#if 1
以“选择”另一种方法)是您的AudioDataImpl
类专用于
?如果不看AudioDataImpl
声明/AudioData.h
就无法判断问题了。AudioDataImpl
的代码为。它依赖于我刚才提到的AudioData
类声明AudioData
依赖于,因此,不要“有益地”链接到外部的代码墙(使问题对于将来的参考毫无用处),而是将问题简化为一个简单的问题。请看我的答案中的一个例子:)@sehe。谢谢你的洞察力。我不确定什么信息是必要的,但我应该包括更多。你认为我应该修改原来的问题吗?