我正在听取您关于如何最好地在C++中实现继承模式的意见。我有两个基类,比如说
class fooBase{
protected:
barBase* b;
};
class barBase{};其中fooBase有一个barBase。我打算将这些类放在一个库中,这样无论我在哪里拥有一个fooBase,它都可以使用它的barBase成员。
我现在打算在一个特定的程序中创建这些的特色化。
class fooSpec : public fooBase{};
class barSpec : public barBase{};现在我希望fooSpec::b指向barSpec而不是barBase。我知道我只能用new barSpec初始化b,但这需要我在专门化中使用特定函数时将指针转换为barSpec,不是吗?
有没有其他方法来实现这一点呢?
干杯。
发布于 2013-07-02 22:42:42
在specclass中创建一个方法,将b转换为特殊版本。这样一来,它看起来就像是一个getter,而不是一直在转换它。
另一方面,OO是面向接口而不是对象的编程。因此,您在这里所做的看起来像是对对象进行编程。但这很难看出来,因为这个例子纯粹是理论上的。
发布于 2013-07-02 22:46:06
您可以考虑模板解决方案:
template <class T>
class fooBase{
protected:
T* b;
};然后使用它作为
class fooSpec : public fooBase<barSpec>{};而通常情况下,该基会用作fooBase<barBase>。这是你想要的吗?
发布于 2013-07-02 22:41:57
通常,我们创建一个具有强制转换并返回指针的函数--并直接使用指针而不是成员。
https://stackoverflow.com/questions/17428472
复制相似问题