.hpp文件中有以下模板对象方法定义(由于代码是冗长的,因此下面仅复制了相关详细信息):
template<typename T>
void cache<T>::parse_input_file (string& filename){
parse_query = [](const string& s)->string{
...
};
process_query = [](const string& s, T& rc, int limit)->string{
...
};
auto print = [] (const string& s){
...
};
...
else{
auto s1 = parse_query(s);
s1 = process_query(s1, impl, cache_capacity);
print(s1);
...
}
...
}
使用命令编译时,以上代码(示例)出现以下编译错误:
g++ -ggdb -std=c++14 -Wall <file names>
error: use of undeclared identifier 'parse_query'
parse_query = [](const string& s)->string{
^
error: use of undeclared identifier 'process_query'
process_query = [](const string& s, T& rc, int limit)->string{
^
error: use of undeclared identifier 'parse_query'
auto s1 = parse_query(s);
^
不确定为什么我在指定返回类型的两个lambda定义中出错(对于使用自动返回类型指定的第三个lambda定义没有错误)。
谁能指出潜在的问题?