prototype for ‘TemplateMatch::TemplateMatch(std::vector<std::__cxx11::basic_string<char> >, std::__cxx11::string&)’ does not match any in class ‘TemplateMatch’ TemplateMatch::TemplateMatch(const std::vector<std::string> templates, std::string & code_stream_)
时间: 2023-07-08 12:24:18 浏览: 54
这个错误提示说明在 TemplateMatch 类中没有与你提供的参数列表匹配的构造函数。你在类中定义的构造函数是以左值引用(&)的方式传递参数,但你传递的参数是一个右值引用(&&)。你需要在类中声明和定义一个构造函数,以右值引用的方式传递参数。你可以使用 std::move() 函数将右值引用转换为左值引用,然后将其传递给构造函数。下面是一个可能的解决方法:
```
TemplateMatch::TemplateMatch(std::vector<std::string>&& templates, std::string& code_stream_)
{
// 构造函数的实现
}
```
注意,在类定义中声明构造函数时,参数列表必须与实现中的参数列表完全一致,包括参数类型和引用类型。
相关问题
template_match.cpp:14:50: error: no matching function for call to ‘TemplateMatch::ParallelMatch(std::vector<std::__cxx11::basic_string<char> >::const_iterator, std::vector<std::__cxx11::basic_string<char> >::const_iterator)’ ParallelMatch(templates.begin(), templates.end()); ^ In file included from template_match.cpp:1:0: template_match.h:13:7: note: candidate: void TemplateMatch::ParallelMatch(std::vector<std::__cxx11::basic_string<char> >::iterator, std::vector<std::__cxx11::basic_string<char> >::iterator) void ParallelMatch(std::vector<std::string>::iterator first, std::vector<std::string>::iterator last);
这个错误提示表明在你的代码中调用了一个不存在的函数。具体来说,这个函数是`TemplateMatch::ParallelMatch`,它期望接收两个`std::vector<std::string>::iterator`类型的参数,但是你传入的却是`std::vector<std::__cxx11::basic_string<char> >::const_iterator`类型的参数,因此编译器找不到匹配的函数。
解决这个问题的方法是修改`ParallelMatch`函数的参数类型,将其改为`const_iterator`类型即可。同时,你也需要确保在调用`ParallelMatch`函数时传入正确的参数类型。
src/template_match.cpp:12:1: error: prototype for ‘TemplateMatch::MatchTask::MatchTask(std::vector<std::__cxx11::basic_string<char> >&, std::__cxx11::string&)’ does not match any in class ‘TemplateMatch::MatchTask’
这个错误是因为你在定义 `TemplateMatch::MatchTask` 类中的 `MatchTask` 构造函数时,其实现与其声明不匹配。请检查一下你的构造函数的参数列表和声明是否一致。可能是你在实现构造函数时,参数列表和声明的参数列表不一致,导致编译器无法匹配。请注意参数的类型、数量和顺序一致。如果你无法解决这个问题,请提供相关代码,我可以帮你更好地解决问题。