gpt4 book ai didi

C++模式策略初始化

转载 作者:行者123 更新时间:2023-11-28 00:31:26 25 4
gpt4 key购买 nike

我正在开发一个类,已决定将其拆分为独立的策略。像这样:

template<class Strategy1, class Strategy2, class Strategy3>
class SomeClass : public ...
{
public:
SomeClass()
{
obj1 = new Strategy1 // and etc initialize member class
}

void run()
{
// do something work with obj1, obj2, obj3
}
...
private:
Strategy1 Obj1;
Strategy2 Obj2;
Strategy3 Obj3;
};

问题是所有特定的策略类都是普通的构造函数,它们的初始化方式都不同。

class Strategy1
{
public:
Strategy1(int, int, int);
...
};

class Strategy2
{
public:
Strategy2(int, double, std::vector&);
...
};

事实证明,如果我只是在类初始化 SomeClass 中,我需要定义一个新的 SomeClass。初始化什么类和什么?请告诉我。

最佳答案

您应该将那些 Strategy 类传递到构造函数中,并在包含对象之外构建它们。如果您尝试这样做,其中构造隐藏在另一个类的构造函数中,那么您将以非常困难的方式绑定(bind)实现。

 SomeClass(Strategy1 obj1, Strategy2 obj2, Strategy3 obj3){

更好的是,如果您可以使用 TR1 函数。假设没有 TR1,那么我建议用调用 Boost::function 来替换这些模板。 .

关于C++模式策略初始化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22771054/

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