首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C++继承模式

C++继承模式
EN

Stack Overflow用户
提问于 2013-07-02 22:37:52
回答 6查看 410关注 0票数 2

我正在听取您关于如何最好地在C++中实现继承模式的意见。我有两个基类,比如说

代码语言:javascript
复制
class fooBase{
protected:
    barBase* b;
};

class barBase{};

其中fooBase有一个barBase。我打算将这些类放在一个库中,这样无论我在哪里拥有一个fooBase,它都可以使用它的barBase成员。

我现在打算在一个特定的程序中创建这些的特色化。

代码语言:javascript
复制
class fooSpec : public fooBase{};
class barSpec : public barBase{};

现在我希望fooSpec::b指向barSpec而不是barBase。我知道我只能用new barSpec初始化b,但这需要我在专门化中使用特定函数时将指针转换为barSpec,不是吗?

有没有其他方法来实现这一点呢?

干杯。

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2013-07-02 22:42:42

在specclass中创建一个方法,将b转换为特殊版本。这样一来,它看起来就像是一个getter,而不是一直在转换它。

另一方面,OO是面向接口而不是对象的编程。因此,您在这里所做的看起来像是对对象进行编程。但这很难看出来,因为这个例子纯粹是理论上的。

票数 4
EN

Stack Overflow用户

发布于 2013-07-02 22:46:06

您可以考虑模板解决方案:

代码语言:javascript
复制
template <class T>
class fooBase{
protected:
   T* b;
};

然后使用它作为

代码语言:javascript
复制
class fooSpec : public fooBase<barSpec>{};

而通常情况下,该基会用作fooBase<barBase>。这是你想要的吗?

票数 3
EN

Stack Overflow用户

发布于 2013-07-02 22:41:57

通常,我们创建一个具有强制转换并返回指针的函数--并直接使用指针而不是成员。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17428472

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档