fstream初始化为一个类

时间:2015-11-27 23:14:07

标签: c++ constructor fstream

在您将其标记为重复之前,我已阅读以下Q&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)

以某种方式调用复制构造函数..这是私有的

任何帮助?

1 个答案:

答案 0 :(得分:0)

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

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

  

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