我有一个 MFC 项目,它提供了用于操作复杂数据结构的 GUI 界面(我们称之为 ComplicatedClass)。我有一个 WTL 项目需要大量使用这个类。我希望能够只管理此类的一个实例,并且不希望每个项目都有自己的 ComplicatedClass 副本。
如果我希望这些项目共享此类的一个实例,我将如何以安全可靠的方式进行此操作?对我来说,唯一的选择似乎是基本上拥有该类的两份副本(一份由 MFC 项目管理,一份由 WTL 方管理)。
你不需要两份。您没有提及您的应用程序的结构,但我假设 MFC 项目是一个 .exe,而 WTL 项目是一个 dll。从采用 ComplicatedClass* 的 dll 中导出一个函数,并将其存储在您的 dll 中使用。我在这里假设 ComplicatedClass 没有任何 UI 数据 - 即,没有 CWnd 派生的对象。如果是这样,您需要小心地正确包装您的 HWND,或者坚持只使用 win32 消息传递(即,仅使用 ::SendMessage)。
这只是一般建议,您的问题对于其他任何问题都不够具体。例如,我不明白您为什么得出结论说您必须拥有两个副本。如果您只是将指针从一个传递到另一个,它们都可以访问它们。