継承を見てください:
interface IArray
{
virtual unsigned __int8* GetAddress() const = 0;
virtual unsigned int GetItemCount() const = 0;
virtual unsigned int GetItemSize() const = 0;
};
template<class T>
class CustomArrayT : public IArray
{
public:
virtual unsigned __int8* GetAddress() const;
virtual unsigned int GetItemCount() const;
virtual unsigned int GetItemSize() const;
T& GetItem(unsigned int index);
};
interface IFloatArray : public CustomArrayT<float>
{
virtual IFloatArray* GetCompressedData() const = 0;
};
class ShannonFloatArray : public IFloatArray
{
public:
virtual IFloatArray* GetCompressedData() const;
};
class FourierFloatArray : public IFloatArray
{
public:
virtual IFloatArray* GetCompressedData() const;
};
class MickyMouseFloatArray : public IFloatArray
{
public:
virtual IFloatArray* GetCompressedData() const;
};
質問の主な目標は、継承IFloatArray -> CustomArrayTです。インターフェイスは、抽象クラスを継承していません。多重継承をサポートしたくありません。しかし、すべてのダウンツリー クラスにクラス CustomArrayT の機能と実装インターフェイス IFloatArray が必要です。
そのような木の長所と短所は何ですか?
どうすれば別の方法でそれを行うことができますか? もしかして何かのパターン?