模糊函数c ++模板继承

时间:2015-06-24 23:06:04

标签: c++ templates inheritance

我尝试编写一些用于多重继承的通用代码。 以下是代码摘要:

struct Type {};

template <class T>
class OOPPolymorphic {
    friend T;
    void RegisterInheritence(const Type* base) {}
public:
    static const Type* GetType() {
        return thisType;
    }
    virtual const Type* MyType() = 0;
};

class Base :public OOPPolymorphic<Base> {
public:
    virtual const Type* MyType() {
        return OOPPolymorphic<Base>::GetType();
    }
};

class Derived : public Base, public OOPPolymorphic<Derived> {
public:
    Derived() {
    OOPPolymorphic<Derived>::RegisterInheritence(Base::GetType());
    }
    virtual const Type* MyType() {
        return OOPPolymorphic<Derived>::GetType();
    }
};

类Base编译没有错误,但在类Derived中我得到歧义错误:

'OOPPolymorphic' is ambiguous '
Candidates are:
 OOPPolymorphic(const OOPPolymorphic<Base> &)
 OOPPolymorphic()
 OOPPolymorphic(const OOPPolymorphic<Derived> &)
 OOPPolymorphic()

我真的不明白为什么会这样。我读到我可以写&#34;使用...&#34;在Derived中修复它,但我必须假设它没有,因为它是功课(我不知道模板的使用是什么)。 有人知道为什么它含糊不清? 谢谢!

0 个答案:

没有答案