fstream初始化为一个类

fstream initialization as a class

本文关键字:一个 初始化 fstream      更新时间:2023-10-16

在将其标记为重复之前,我已经阅读了以下问答;A.

我有一个简单的课程叫ATM:

ATM.h

class ATM {
public:
    ATM(Bank* ownerBank, const char* inputFile);
    ~ATM();
    void performSingleATMAction();
    friend void* performSingleATMActionFunc(void* pVoidATM);
private:
    Bank* ownerBank;
    string inputFile;
    fstream fileReader;
    Thread mainThread;
    static const unsigned int ATM_SLEEP_TIME = 1000*100;
};

我尝试通过初始化列表对其进行初始化:

ATM::ATM(Bank* ownerBank, const char* inputFile) :
ownerBank(ownerBank),
inputFile(inputFile), 
fileReader(inputFile,std::ifstream::in), // why copy constructor?
mainThread(performSingleATMActionFunc,this)
{}

线路fileReader(inputFile,std::ifstream::in)

以某种方式调用复制构造函数。。哪个是专用

有什么帮助吗?

在肢体上,您可能正在复制ATM类型的对象。默认情况下,复制所有成员。

这需要流的复制构造函数。

注意:让文件流成为ATM类的一员对我来说是一种设计气味。ATM机通常没有"a"文件。因此,您可能需要一个(成员)函数来读取"事务"(只是猜测)