我有一个管理器,它将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
我有什么想法可以解决这个问题。从实际的编译问题到完全不同的方法。