【发布时间】:2016-08-13 09:18:25
【问题描述】:
我是 C++ 新手,不明白为什么我的非常简单的代码无法编译。我正在尝试通过将字符串从第一个参数传递给应用程序来在我的类中实例化一个 ifstream 对象。
构建给出:error: no match for call to '(std::ifstream) (const char*)'
标题:
#ifndef _SIMPLE_TEST
#define _SIMPLE_TEST
#include <iostream>
#include <fstream>
#include <string.h>
class mytest {
public:
mytest(int number);
bool validate_config(const std::string &s);
private:
std::ifstream configFileStream;
int magic;
};
#endif
代码:
#include <iostream>
#include <fstream>
#include <string.h>
#include "simple.hpp"
mytest::mytest(int number) {
magic = number;
}
bool mytest::validate_config(const std::string &s) {
configFileStream(s.c_str());
return true;
}
int main(int argc, char **argv) {
bool check;
std::string configFile(argv[1]);
mytest DBG(17);
check = DBG.validate_config(configFile.c_str());
if (check) {
return 0;
}
return -1;
}
构建错误(来自控制台):
Compile src/simple.cpp
src/simple.cpp: In member function 'bool mytest::validate_config(std::string)':
src/simple.cpp:12:28: error: no match for call to '(std::ifstream) (const char*)'
Makefile:23: recipe for target `_out/simple.o' failed
make: *** [_out/simple.o] Error 1
我已经搜索过了,结果一直认为它应该可以工作 我将字符串类 c_str() 方法的输出传递给 mytest validate_config 方法(对不起,控制台输出格式错误)
【问题讨论】:
-
std::ifstream类没有您尝试调用的operator()函数。您是否正在寻找open函数?
标签: c++ string ifstream member