class和传递字符串作为方法的参数

时间:2016-02-27 19:33:12

标签: c++

如何将字符串传递给类中的方法?

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();
        ^

3 个答案:

答案 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
}