Я новичок в C++ и не понимаю, почему мой очень простой код не компилируется. Я пытаюсь создать экземпляр объекта ifstream в моем классе, передав строку из первого аргумента в приложение.
здание не дает: ошибка: не подходит для вызова '(станд :: ifstream) (Const символ *)'C++, передавая имя файла в строке для функции класса, используя его для объекта ifstream
Заголовок:
#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'] (http://en.cppreference.com/w/cpp/io/basic_ifstream) не имеет функции' operator() ', которую вы пытаетесь вызвать. Возможно, вы ищете функцию ['open'] (http://en.cppreference.com/w/cpp/io/basic_ifstream/open)? –