gpt4 book ai didi

c++ - 如何将这个工厂逻辑保存在一个地方?

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

我有 2 个类:Bar 和 Foo。

它们都派生了 2 个接口(interface):IActions 和 IOtherActions。

所以我们有类似的东西:

class Bar : public IActions ,public IOtherActions

class Foo : public IActions ,public IOtherActions

现在我有一个工厂,我有逻辑来决定是否要使用 Foo 或 Bar。

IActions* getActions();
IOtherActions* getOtherActions();

我的问题是 getActions() 中的内容和 getOtherActions() 中的内容是完全相同的逻辑。

IActions* getActions()
{
// not trivial logic to decide which one to use and to create the instance
return instancePointer;
}

正如我所说,getOtherActions() 只是 getActions() 的复制粘贴,返回类型不同。

有什么方法可以将逻辑放在一个地方吗?

最佳答案

至少乍一看,您似乎可以使用模板(您将为每个返回类型显式实例化):

template <class T>
T *getActions() {
// non-trivial logic
return isntancePointer;
}

...然后将实例化为 getActions<IActions *>getActions<IOtherActions *> .

关于c++ - 如何将这个工厂逻辑保存在一个地方?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34780316/

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