gpt4 book ai didi

c++ - 成员指针或引用参数?

转载 作者:行者123 更新时间:2023-11-28 08:26:16 24 4
gpt4 key购买 nike

我有以下问题。

我有一个类 PluginLoader 来监督插件的加载。它将工作的子阶段划分给其他类,如 PluginPlugin 在其处理过程中调用了PluginLoader 的函数。我们将该函数称为 AddData。在这里,PluginLoader 必须检查它接收到的数据是否重复。为此,它使用了一个 ConflictResolver 类。现在,我的问题是如何使 ConflictResolver 的对象可用于 PluginLoader。我有 3 种方法可以看出这一点。

  1. 使用 ConflictResolverFactory 类并为 PluginLoader 创建一个 ConflictResolver 对象。
  2. 通过其构造函数或成员函数SetConflictResolver将构造的ConflictResolver*传递给PluginLoader,并将其存储在成员变量中并使用它之后。两种方式都有缺点。如果我在构造函数中传递它,如果指针为 NULL,我将不得不抛出异常。而且我不能使用异常(exception),因为这是这里的习惯。如果我通过 SetConflictResolver 传递它,我无法保证用户实际调用该函数。或者我将不得不检查成员 ConflictResolver* 是否在我使用它的任何地方都是 NULL
  3. ConflictResolver & 传递给 PluginLoaderLoad 方法,所有工作都将在这里完成。反过来,Plugin 的 Load 方法也必须接受 ConflictResolver &(尽管它没有用处)并将其传递回 AddData PluginLoader 将能够使用它。

与第二种方法相比,第三种方法更安全。但是,即使未使用引用,我也必须传递它。

如果无法使用第一种方法,那么最好的方法是什么?

为墙道歉:wq!

最佳答案

您可以将 ConflictResolver& 传递给 PluginLoader 构造函数。您现在可以保证该对象不为空。

关于c++ - 成员指针或引用参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3977564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com