C++ 成员指针还是引用参数?

C++ 成员指针还是引用参数?,c++,coding-style,C++,Coding Style,我有以下问题 我有一个类PluginLoader,它监督插件的加载。它将工作的子阶段划分为其他类,如PluginPlugin在其处理过程中调用PluginLoader的函数。让我们调用该函数AddData。这里,PluginLoader必须检查它接收的数据是否重复。为此,它使用了一个ConflictResolver类。现在,我的问题是如何使冲突解决程序的对象可用于插件加载程序。我认为有三种方法可以解决这个问题 使用ConflictResolverFactory类,为PluginLoader创建一

我有以下问题

我有一个类
PluginLoader
,它监督插件的加载。它将工作的子阶段划分为其他类,如
Plugin
Plugin
在其处理过程中调用
PluginLoader
的函数。让我们调用该函数
AddData
。这里,
PluginLoader
必须检查它接收的数据是否重复。为此,它使用了一个
ConflictResolver
类。现在,我的问题是如何使
冲突解决程序
的对象可用于
插件加载程序
。我认为有三种方法可以解决这个问题

  • 使用
    ConflictResolverFactory
    类,为
    PluginLoader
    创建一个
    ConflictResolver
    对象
  • 通过构造函数或成员函数
    SetConflictResolver
    将构造的
    ConflictResolver*
    传递给
    PluginLoader
    ,并将其存储在成员变量中,稍后使用。这两种方法都有缺点。如果我在构造函数中传递它,如果指针为
    NULL
    ,我将不得不抛出它。我不能使用异常,因为这是这里的习惯。如果我通过
    setconflictsolver
    传递它,我无法保证该函数将被用户实际调用。或者我必须检查成员
    conflictcolver*
    是否在我使用它的任何地方都是
    NULL
  • conflictcolver&
    传递给
    PluginLoader
    s
    Load
    方法,所有工作都将在该方法中完成。反过来,
    Plugin
    s加载方法也必须接受一个
    conflictcolver&
    (尽管它没有用处),并将其传递回
    AddData
    ,其中
    PluginLoader
    将能够使用它
  • 第三种方法比第二种更安全。然而,我必须传递一个引用,即使它没有被使用

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


    为墙道歉:wq

    您可以将冲突解决程序&传递给PluginLoader构造函数。您现在可以保证对象不为null。

    是否会有不同类型的
    冲突解决程序
    ?是否有一些顶级代码调用
    PluginLoader::Load()
    ,调用
    Plugin::Load()
    ,调用
    PluginLoader::AddData()
    ,哪个调用了
    conflictcolver
    中的某个方法?但是每个
    PluginLoader
    实例将只有一个不变的
    conflictcolver
    对象与其关联,对吗?(即,不同的
    插件
    对象可能不需要要求
    插件加载程序
    使用不同的
    冲突解决程序
    对象?)不,存储引用。您可以将成员变量声明为引用。