我的程序中有一个类,它是一个文件解析器,可为我提供输出。由于这是文件解析,因此必须使用文件名才能使用此类。
FileReader.h
class FileReader{
public:
FileReader(std::string filePath);
//other member functions
private:
//private variables
};
MainProgram.h
class MainProgram{
public:
FileReader reader; //this gives error
private:
};
MainProgram.cpp
MainProgram::setup()
{
public:
reader = new FileReader("files/something.xml") //intended to use like this
}
错误: src / MainProgram.h | 57 |错误:调用“FileReader::FileReader()” |的功能不匹配
在初始化期间,如何使类带有必需参数?
最佳答案
更换:
FileReader(std::string filePath)(); // not valid way of providing function definition
与:
FileReader(std::string filePath){}
您还需要在MainProgram构造函数
member initialzer list
中初始化FileReader。如果要在设置函数中使用
new FileReader
,则阅读器必须是指针类型。class MainProgram{
public:
MainProgram(const std::string& file):reader(file){} // init reader in member initializer
private:
FileReader reader;
};
int main(int argc, char* argv[])
{
MainProgram test("files/something.xml");
return 0;
}
关于c++ - 没有无参数构造函数的类C++,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/14049891/