Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/134.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 在boost文件\u sink类中延迟打开调用_C++_Boost - Fatal编程技术网

C++ 在boost文件\u sink类中延迟打开调用

C++ 在boost文件\u sink类中延迟打开调用,c++,boost,C++,Boost,函数foo()每次调用一个文件时都会从中返回5个字节。如果使用了file\u sink类,则每次调用foo()时都必须打开该文件。一种方法是在头文件中将文件\u sink声明为private,然后在构造函数中在文件\u sink上调用open,每次调用foo()时只调用read,而不必每次调用open()。但这似乎是不可能的,因为file_sink构造函数需要文件路径。如何解决此问题。在头文件中有一个文件接收器指针,在构造函数中将其初始化为NULL,并让foo创建文件接收器(使用文件名)第一次通

函数foo()每次调用一个文件时都会从中返回5个字节。如果使用了file\u sink类,则每次调用foo()时都必须打开该文件。一种方法是在头文件中将文件\u sink声明为private,然后在构造函数中在文件\u sink上调用open,每次调用foo()时只调用read,而不必每次调用open()。但这似乎是不可能的,因为file_sink构造函数需要文件路径。如何解决此问题。

在头文件中有一个
文件接收器
指针,在构造函数中将其初始化为NULL,并让
foo
创建
文件接收器
(使用文件名)第一次通过。

或将其设置为
boost::optional
,并避免动态分配和相关内存management@sehe-更好。我倾向于老派。