c ++模板mixin多继承问题

时间:2015-12-31 20:02:57

标签: c++ templates multiple-inheritance

我有一个管理器,它将shared_ptr保存到不同类型的对象中,并且所有这些对象都提供相同的特定功能,但也提供了一个通用功能。

我想用mixin删除重复部分,如下所示:

template <typename T>
class ManagerMixin
{
public:
    typedef T MixinObject;
    typedef std::shared_ptr<MixinObject> MixinObjectSPtr;

    MixinObjectSPtr unique(const MixinObjectSPtr& object)
    {
        return *mMixinObjects.insert(object).first;
    }

private:
    std::unordered_set<MixinObjectSPtr> mMixinObjects;
};

现在,当我为多个班级继承这个时,说

class Manager : public ManagerMixin<Object1>, public ManagerMixin<Object2>

这两种类型的unique方法应该是可见的,但我得到了

error: member 'unique' found in multiple base classes of different types

我有什么想法可以解决这个问题。从实际的编译问题到完全不同的方法。

0 个答案:

没有答案