该代码包括1个头文件和1个源文件。我已经削减了irrelevent代码,仍然保持编译错误。
霍夫曼
#ifndef HUFFMAN
#define HUFFMAN
template<int size>
class Huffman{
protected:
int code_len[size];
int code[size];
void genCode(){
}
};
template<int size>
class HuffmanEncode :public Huffman<size>{
public:
void f(){
for (int i = 0; i < size; i++){
code_len[i] = 0;
}
}
};
#endif
main.cpp
#include"Huffman.h"
int main()
{
HuffmanEncode<256> h;
}
成员变量
code_len
在基类中定义。我不知道为什么它说code_len
是未定义的。 最佳答案
这是模板的特殊情况。问题在于,在依赖基类code_len
(取决于模板参数Huffman
)的范围内不会查找非依赖名称size
。
您可以使名称code_len
依赖,然后仅在实例化时进行查找;那时知道模板参数并且实例化了基类,那么可以在基类的范围内找到名称code_len
(类似于非模板基类)。例如
this->code_len[i] = 0;
要么
Huffman<size>::code_len[i] = 0;
关于c++ - 未在基类模板中声明成员,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/53716445/