私はC++初心者です。私の非常に単純なコードがコンパイルされない理由を理解できません。私は最初の引数からアプリケーションに文字列を渡すことによってクラス内のifstreamオブジェクトをインスタンス化しようとしています。
ビルが与える:エラー: '(STD ::はifstream)(定数のchar *)' への呼び出しのための一致なし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
私は検索しましたし、結果は常に
['std :: ifstream'](http://en.cppreference.com/w/cpp/io/basic_ifstream)クラスには、あなたが呼び出そうとしている' operator() '関数がありません。あなたはおそらく、 '' open'(http://en.cppreference.com/w/cpp/io/basic_ifstream/open)機能を探していますか? –