Named Parameter

class File;

class OpenFile{
public:
	OpenFile(const std::string& file_name);
	//sets all the default values for each data member.
	OpenFile &_Read_only();
	OpenFile &_Read_write();
	OpenFile &_Create_if_not_exist();
	OpenFile &_Block_size(unsigned nbytes);
private:
	friend class File;
	std::string m_file_name;
	bool m_read_only;
	bool m_create_if_not_exist;
	unsigned m_block_size;
};
//Better put 'inline' keyword here!
inline OpenFile::OpenFile(const std::string& file_name)
	:m_file_name(file_name),
	m_read_only(false),
	m_create_if_not_exist(false),
	m_block_size(4096u)
{ }

inline OpenFile& OpenFile::_Read_only(void)
{
	m_read_only = true;
	return *this;
}

inline OpenFile& OpenFile::_Read_write(void)
{
	m_read_only = false;
	return *this;
}

inline OpenFile &OpenFile::_Create_if_not_exist(void)
{
	m_create_if_not_exist = true;
	return *this;
}

inline OpenFile &OpenFile::_Block_size(unsigned nbytes)
{
	m_block_size = nbytes;
	return *this;
}

class File{	//Friend of class OpenFile.So OpenFile doesn't many get()s.
public:
	File(const OpenFile& params);
};

File::File(const OpenFile& params)
{
	//Check the open mode recorded in class OpenFile.
	//then open it.
}
//usage:
int main(void)
{
	OpenFile open_file("foo.txt");	
	open_file._Create_if_exist();
	open_file._Read_write();

	File file(open_file);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值