如何将字符串传递给类中的方法?
class Txtbin{
private:
std::string input;
std::string output = "output.png";
void error();
public:
Txtbin();
void run();
};
Txtbin::Txtbin(){
}
void Txtbin::error(const char* str){
throw std::runtime_error(str);
}
void Txtbin::run(){
if(input == ""){
error("Input file not defined");
}
}
# g++ -std=c++11 txtbin.cpp -o txtbin `pkg-config opencv --cflags --libs`
txtbin.cpp:30:6: error: prototype for ‘void Txtbin::error(const char*)’ does not match any in class ‘Txtbin’
void Txtbin::error(const char* str){
^
txtbin.cpp:14:8: error: candidate is: void Txtbin::error()
void error();
^
答案 0 :(得分:0)
prototype for ‘void Txtbin::error(const char*)’
does not match any in class ‘Txtbin’
您尝试定义Txtbin
void error(const char*)
函数,但它没有。{/ p>
candidate is: void Txtbin::error()
然而,它确实声明了void error()
函数,没有参数。由于您实际上在实现中使用了该参数,因此您可能希望将其添加到其声明中。
答案 1 :(得分:0)
正如其他人提到的那样,您宣布void error();
,但定义void error(const char* str);
。将const char* str
参数也放在声明中,在类中。
答案 2 :(得分:0)
像其他人所说的那样,void error()不需要参数。但是后来你创建了一个带有参数的void error(const char * str)。
class Txtbin{
private:
string input;
string output = "output.png";
public:
Txtbin();
void error(const char*); //This is what you need.
/* void error(); THIS IS WHAT YOU HAD */
void run();
};
void Txtbin::error(const char* str)
{
//Whatever
}