在您将其标记为重复之前,我已阅读以下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)
以某种方式调用复制构造函数..这是私有的
任何帮助?
答案 0 :(得分:0)
在肢体上,您可能正在复制ATM
类型的对象。其中 - 默认情况下 - 复制所有成员。
这需要流的复制构造函数。
注意:让文件流成为ATM类的成员对我来说是一种设计气味。自动取款机没有"有一个"文件,通常。所以,你可能需要一个(成员)函数来读取"事务" (只是猜测)