prototype for ‘int LabelParse::JsonFindArry(std::__cxx11::string&, std::__cxx11::string&)’ does not match any in class ‘LabelParse’ int LabelParse::JsonFindArry(std::string &find_string, std::string &result)
时间: 2023-09-14 11:07:30 浏览: 131
这个错误的提示信息表明在 `LabelParse` 类中没有匹配到和你尝试调用的 `JsonFindArry` 函数原型相匹配的函数。具体来说,你尝试调用的函数是 `int LabelParse::JsonFindArry(std::string &find_string, std::string &result)`,但是在 `LabelParse` 类中找不到这个函数的定义。
可能的原因是你没有在类的声明中包含这个函数的原型,或者是原型的参数类型或数量与类中定义的函数不匹配。你需要检查一下 `LabelParse` 类的声明和定义,确保函数的原型与类中定义的函数匹配。如果还是无法解决问题,可以提供更多的代码和错误信息,以便更好地理解和帮助你解决问题。
相关问题
cannot declare member function ‘static int LabelParse::PrepareForParse(std::__cxx11::string&, std::bitset<200ul>&)’ to have static linkage [-fpermissive] cannot declare member function ‘static int LabelParse::PrepareForParse(std::__cxx11::string&, std::bitset<200ul>&)’ to have static linkage [-fpermissive]cannot declare member function ‘static int LabelParse::PrepareForParse(std::__cxx11::string&, std::bitset<200ul>&)’ to have static linkage [-fpermissive]
这个错误提示说明在类的定义中,尝试将成员函数`PrepareForParse`声明为静态成员函数,但是却指定了静态链接。在C++中,成员函数默认是非静态的,并且具有隐式的this指针,因此不需要显式指定为静态链接。
要解决这个问题,只需要将成员函数`PrepareForParse`声明为普通的非静态成员函数即可。例如:
```cpp
class LabelParse {
public:
int PrepareForParse(std::string& input, std::bitset<200>& bits);
};
```
不需要在声明中加上`static`关键字。这样就可以将`PrepareForParse`作为普通的成员函数使用,可以通过类的对象来调用该函数。
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_)
这个错误提示说明在 TemplateMatch 类中没有与你提供的参数列表匹配的构造函数。你在类中定义的构造函数是以左值引用(&)的方式传递参数,但你传递的参数是一个右值引用(&&)。你需要在类中声明和定义一个构造函数,以右值引用的方式传递参数。你可以使用 std::move() 函数将右值引用转换为左值引用,然后将其传递给构造函数。下面是一个可能的解决方法:
```
TemplateMatch::TemplateMatch(std::vector<std::string>&& templates, std::string& code_stream_)
{
// 构造函数的实现
}
```
注意,在类定义中声明构造函数时,参数列表必须与实现中的参数列表完全一致,包括参数类型和引用类型。
阅读全文