找不到C ++构造函数

时间:2014-01-04 19:22:31

标签: c++ constructor

我在DateTime.h上定义了这个类

class DateTime {
public:
    int h;
    int m;

    DateTime() {};
    DateTime(string & sf) {
        int i = sf.find(":", 0);
        string _h = sf.substr(0, sf.length() - i-1);
        string _m = sf.substr(i+1, sf.length() - i);

        h = atoi(_h.c_str());
        m = atoi(_m.c_str());
    };
}

然后在其他模块中我像这样包含它

#include <DateTime.h>

并像这样调用构造函数

string str("12:13");
DateTime dt(str);

在编译时给出了这个错误

src/problem/Reader.cpp: En la función miembro ‘void Reader::readFile(const char*)’:
src/problem/Reader.cpp:44:12: error: no hay coincidencia para la llamada a ‘(DateTime) (std::string&)’
make: *** [build/Reader.o] Error 1

2 个答案:

答案 0 :(得分:3)

你的分号是错误的。 “};”应该是班级的最后一个。这使编译器看不到将字符串作为参数的构造函数。

更改它并尝试再次编译并告诉我们。

答案 1 :(得分:1)

可能你的字符串是const。更改构造函数

DateTime(string const& sf) {

// or even
DateTime(string sf) {

编辑它或者是不同的string类型。 我认为我的分析在统计上更有意义。