Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/152.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++代码在一个大文件(15 GB)上执行。该代码分为两个阶段,第一个阶段需要很长时间才能完成。但与此同时,我为其第2阶段找到了一种更好的实现技术,我不想从一开始就重新启动整个执行。这两个阶段按实际使用的两个类进行分类。从中得出一个想法: Parser.parse(filePath); // phase one Processor.processAndLog(); // phase two_C++_Visual C++_Visual Studio 2008_Runtime - Fatal编程技术网

在运行时更改当前未使用的类实现 我有一个C++代码在一个大文件(15 GB)上执行。该代码分为两个阶段,第一个阶段需要很长时间才能完成。但与此同时,我为其第2阶段找到了一种更好的实现技术,我不想从一开始就重新启动整个执行。这两个阶段按实际使用的两个类进行分类。从中得出一个想法: Parser.parse(filePath); // phase one Processor.processAndLog(); // phase two

在运行时更改当前未使用的类实现 我有一个C++代码在一个大文件(15 GB)上执行。该代码分为两个阶段,第一个阶段需要很长时间才能完成。但与此同时,我为其第2阶段找到了一种更好的实现技术,我不想从一开始就重新启动整个执行。这两个阶段按实际使用的两个类进行分类。从中得出一个想法: Parser.parse(filePath); // phase one Processor.processAndLog(); // phase two,c++,visual-c++,visual-studio-2008,runtime,C++,Visual C++,Visual Studio 2008,Runtime,那么,在处理器类开始执行之前,是否有一些方法来更改它的实现?阶段1的结束(甚至完成了多少)可以与我打印的一些时间消息(比如日志)区分开来。如果处理器。processAndLog是一个成员函数指针,您可以在调用之前随时更改它 另一种方法是让Processor.processAndLog作为其他函数的包装函数—调度函数 还有一个挂钩函数的问题。有一个图书馆叫。只有在无法更改程序的源代码时才使用此选项。因此,如果我理解正确:您有一个当前正在运行的程序,但尚未在特定类中执行代码。您希望找到一种方法来更新

那么,在处理器类开始执行之前,是否有一些方法来更改它的实现?阶段1的结束(甚至完成了多少)可以与我打印的一些时间消息(比如日志)区分开来。

如果
处理器。processAndLog
是一个成员函数指针,您可以在调用之前随时更改它

另一种方法是让Processor.processAndLog作为其他函数的包装函数—调度函数


还有一个挂钩函数的问题。有一个图书馆叫。只有在无法更改程序的源代码时才使用此选项。

因此,如果我理解正确:您有一个当前正在运行的程序,但尚未在特定类中执行代码。您希望找到一种方法来更新它,以便在不停止程序的情况下为该类使用新版本的代码

理论上这是可以做到的。但在实践中,这可能是远远超过它的价值,特别是如果这是一个一次性的需要麻烦。C++不是为这种事情而设计的。这并不是说进程内存中有简单的人类可读的源代码,这些代码很容易被覆盖

正确地做到这一点几乎肯定会花费大量的时间和精力,最有可能涉及大量的实验、跟踪和错误。如果您的操作出错(这可能是第一次),那么您可能只是破坏了您的流程和结果,因此无论如何都需要重新启动它


我不知道您的流程目前需要多长时间,但尝试找出如何实现此想法可能需要比在构建新版本的程序后重新启动流程更多的时间。

如果有,不建议使用。如果您提到它们,编辑将非常有用。请在orfer中修改可执行文件以拦截错误的调用并调用其他内容。