类设计:类成员继承自同一基类
Class design: Class member inherits from the same base class
我正在为以下情况考虑一个合适的类设计:假设我想创建一个类似(数学(函数的类设计。所有函数都派生自基类Function
。现在可以想到函数CCD_ 2,它是CCD_。在我的例子中,FuncB
和FuncA
是相当复杂的对象,但我当前的实现可以归结为:
class Function
{
virtual double value() = 0;
};
class FuncA : public Function
{
public:
virtual double value() {return v;}
private:
double v;
};
class FuncB : public Function
{
virtual double value() {
double result = 0;
for( auto i : v)
result += i.value();
return result;
}
private:
std::vector<DerivedA> v;
};
不知怎的,我会认为这是一个糟糕的类设计,因为FuncB
有一个成员继承自与类本身相同的基类。有什么建议可以更优雅地解决这个问题吗?
复合设计模式
class ContainerOfX : public X {
typedef X* bestType;
// maybe...
// typedef std::shared_ptr<X> bestType;
...
std::vector< bestType > subTypes;
};
它允许您创建一个绘图系统-不同形状的复合对象可以被视为agregate
obj->draw(); // draw house from various lines and boxes.
它允许您为do/undo逻辑创建一个简单的脚本。
相关文章:
- 派生类看不到基类成员
- C++11: 如何访问派生类中的基类成员?
- Qml 未收到基类成员变量的更新值
- 指向从指针派生类成员函数的指针,指向基类成员函数
- 初始化基类成员 (c++) 的首选方法
- 访问多级复合关系中的基类成员
- 允许从特定派生类访问基类成员
- 在派生类的成员联合中包含继承的基类成员
- 由派生类设置的 constexpr 基类成员
- 从派生类调用的抽象基类成员函数
- 从抽象基类访问另一个基类成员
- C++派生类访问基类成员
- 不能引用派生模板类中的基类成员
- C2694 在析构函数上,当基类成员的析构函数具有非空 noexcept 说明符和主体时
- 在Visual Studio 2017中,通过扩展每个参数包来呼叫基类成员失败
- 在C 中访问带有不正确的下属的基类成员
- C++将基类成员链接到派生类成员
- 从基类成员函数返回派生类的实例
- 从指针到基类成员的模板推导
- 是否可以从派生类中排除基类成员?