gpt4 book ai didi

c++ - 通过模板多重继承

转载 作者:行者123 更新时间:2023-11-30 05:43:38 25 4
gpt4 key购买 nike

<分区>

将虚拟多重继承(钻石)替换为模板继承(线性)是个好主意吗?例如我有这个类图:

       IBase
/ \
/ \
IExtendedBase BaseImpl
\ /
ExtendedImpl

我知道我可以用虚拟继承来实现它。但是我可以使用模板来使这个图表线性化吗?

class IBase
{
public:
virtual std::string name() = 0;
};

template<typename T>
class BaseImpl : public T
{
public:
virtual std::string name() override
{
return "BaseCommonImpl";
}
};

template<typename T>
class IExtendedBase : public T
{
public:
virtual std::string extended_name() = 0;
};

template<typename T>
class ExtendedBaseImpl : public T
{
public:
virtual std::string extended_name() override
{
return "ExtendedBaseImpl";
}
};

现在有了 typedef,我可以特化 ExtendedBase

typedef IExtendedBase<BaseImpl<IBase>> _ExtendedBase;
typedef ExtendedBaseImpl<_ExtendedBase> _ExtendedBaseImpl;

哪种方法更好?虚拟继承还是模板继承?

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