首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >VCL多重继承

VCL多重继承
EN

Stack Overflow用户
提问于 2009-10-30 08:48:50
回答 2查看 1.5K关注 0票数 2

我正在尝试开发一组控件,这些控件在大小方面都有一些共同的行为。我认为这是一个需要多重继承的实例(尽管我完全愿意接受任何相反的建议)。我想要做的基本上是一个混合模式。

代码语言:javascript
复制
class Sizable {        
    ...
    public:
        ResizeMe();
        ResetText();
        ...
};

class sizeButton : public Sizable, public TButton {
...
};

class sizeEdit : public Sizable, public TEdit {
...
};

以此类推。

我已经在Sizable类中编写了大量的大小调整代码,并对其进行了测试,这很好,但现在我已经列出了结构的其余部分(是的,我可能应该先为类编写一个框架),并不幸地发现:

代码语言:javascript
复制
[BCC32 Error] szButton.h(15): E2278 Multiple base classes not supported for VCL classes

我已经提取了所有不需要成为成员函数的函数(例如,测量字符串的长度),但仍然有很多函数不可能做到这一点。

有没有人有什么设计建议,这样我就不必重复一大堆代码了?

EN

回答 2

Stack Overflow用户

发布于 2009-11-04 09:44:58

Delphi (以及VCL,它主要是用Delphi编写的)不支持类的多重继承。然而,在v6之后的版本中,当VCL类被用作祖先时,它确实支持接口的多重继承,例如:

代码语言:javascript
复制
// must be a pure virtual class with no data members
// and no implementation of its own...
class Sizable
{
public:
    virtual void ResizeMe() = 0;
    virtual void ResetText() = 0;
    ...
};

class sizeButton : public TButton, public Sizable
{
public:
    virtual void ResizeMe();
    virtual void ResetText();
    ...
}; 

class sizeEdit : public TEdit, public Sizable
{
public:
    virtual void ResizeMe();
    virtual void ResetText();
    ...
}; 
票数 3
EN

Stack Overflow用户

发布于 2009-10-30 09:01:49

为什么不让TButton成为成员(组合)而不是继承它呢?

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

https://stackoverflow.com/questions/1647440

复制
相关文章

相似问题

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