代码包括1个头文件和1个源文件。我已经削减了irrelevent代码,仍然保持了编译错误。
Huffman.h
#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
是不确定的。
答案 0 :(得分:3)
这是模板的特殊情况。问题在于,在依赖基类code_len
(取决于模板参数Huffman
)的范围内不会查找非依赖名称size
。
您可以将名称code_len
设置为依赖项,然后仅在实例化时进行查找;那时知道模板参数并且实例化了基类,那么可以在基类的范围内找到名称code_len
(类似于非模板基类)。例如
this->code_len[i] = 0;
或
Huffman<size>::code_len[i] = 0;