Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/124.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++ 我可以取消单身吗_C++ - Fatal编程技术网

C++ 我可以取消单身吗

C++ 我可以取消单身吗,c++,C++,我想使用大量使用单例的库,但实际上我需要一些管理器类具有多个实例。代码是开源的,但是自己修改代码会使库更新到新版本变得很困难 有什么技巧(如果有的话)可以强制创建一个新的单例实例,甚至整个库?在windows下,您可以将每个实例封装在不同的DLL中。请记住,库还取决于单例的单例特性。如果要更新库,则需要验证所做的更改是否违反库的功能。每次只能手动完成。首先找出谁写了这个库,访问他们的家庭地址,把他们打得血肉模糊,最好是写一本关于软件设计的书。:) 除此之外:将对原始库的更改作为补丁集进行维护,以

我想使用大量使用单例的库,但实际上我需要一些管理器类具有多个实例。代码是开源的,但是自己修改代码会使库更新到新版本变得很困难


有什么技巧(如果有的话)可以强制创建一个新的单例实例,甚至整个库?

在windows下,您可以将每个实例封装在不同的DLL中。

请记住,库还取决于单例的单例特性。如果要更新库,则需要验证所做的更改是否违反库的功能。每次只能手动完成。

首先找出谁写了这个库,访问他们的家庭地址,把他们打得血肉模糊,最好是写一本关于软件设计的书。:)


除此之外:将对原始库的更改作为补丁集进行维护,以便(或多或少)轻松地将其应用于每个新版本。另外,尝试将您的更改放入库中,这样您就不必自己维护修补程序了。;)

答案是“视情况而定”。一个很好的例子是微软公司运行时使用的C++堆。当然,这是作为单例实现的。现在,当您将CRT静态链接到多个DLL中时,最终会得到多个副本。较新的实现只有一个堆,而较旧的CRT为每个链接到的库创建了一个堆。

可能有帮助,也可能没有帮助,请参见我的反例。