我的程序中有一个类,它是一个文件解析器,可为我提供输出。由于这是文件解析,因此必须使用文件名才能使用此类。

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/

10-16 03:42