在我的代码中,我的输入是string
,但是我的函数之一可以与char*
一起使用,所以我要像这样转换它:
string Regex;
std::cin>>Regex;
const char* char_regex = Regex.c_str();
还有我的功能
Regex(automates_list,Regex.size(),char_regex,std::cout);
定义如下:
void Regex(List& list,int const& word_length,const char* word,ostream& out)
错误是:
错误:对“(std :: __ cxx11 :: string {aka std :: __ cxx11 :: basic_string
})的调用不匹配”(List&,int&,const char *&,std :: ostream&)'|
答案 0 :(得分:2)
您的代码结构如下所示:
void Regex(...);
int main() {
std::string Regex = ...;
// ...
Regex(automates_list,Regex.size(),char_regex,std::cout);
}
由于字符串Regex
shadows和函数Regex
导致错误。您可以通过重命名字符串或重命名函数来解决此问题:
重命名功能:在这里,我将功能重命名为applyRegex
。
void applyRegex(...);
int main() {
std::string Regex = ...;
// ...
applyRegex(automates_list,Regex.size(),char_regex,std::cout);
}
重命名字符串:在这里,我将字符串重命名为userRegex
。
void Regex(...);
int main() {
std::string userRegex = ...;
// ...
Regex(automates_list,userRegex.size(),char_regex,std::cout);
}