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
sLoad
方法,所有工作都将在该方法中完成。反过来,Plugin
s加载方法也必须接受一个conflictcolver&
(尽管它没有用处),并将其传递回AddData
,其中PluginLoader
将能够使用它为墙道歉:wq 您可以将冲突解决程序&传递给PluginLoader构造函数。您现在可以保证对象不为null。是否会有不同类型的
冲突解决程序
?是否有一些顶级代码调用PluginLoader::Load()
,调用Plugin::Load()
,调用PluginLoader::AddData()
,哪个调用了conflictcolver
中的某个方法?但是每个PluginLoader
实例将只有一个不变的conflictcolver
对象与其关联,对吗?(即,不同的插件
对象可能不需要要求插件加载程序
使用不同的冲突解决程序
对象?)不,存储引用。您可以将成员变量声明为引用。