C++;接口继承 如何在C++中进行派生? (当前示例不起作用)
谢谢 返回类型协方差仅适用于指针和引用,这应该有效:C++;接口继承 如何在C++中进行派生? (当前示例不起作用),c++,inheritance,interface,C++,Inheritance,Interface,谢谢 返回类型协方差仅适用于指针和引用,这应该有效: struct IB { }; struct IDerivedB : public IB { }; struct IA { public: virtual IB* BuildPresenter(const string& type) = 0; }; struct IDerivedA : public IA { public: virtual IDerivedB* BuildPresenter(const str
struct IB
{
};
struct IDerivedB : public IB
{
};
struct IA
{
public:
virtual IB* BuildPresenter(const string& type) = 0;
};
struct IDerivedA : public IA
{
public:
virtual IDerivedB* BuildPresenter(const string& type) override = 0;
};
返回类型协方差仅适用于指针和引用,这应适用于:
struct IB
{
};
struct IDerivedB : public IB
{
};
struct IA
{
public:
virtual IB* BuildPresenter(const string& type) = 0;
};
struct IDerivedA : public IA
{
public:
virtual IDerivedB* BuildPresenter(const string& type) override = 0;
};
你的编译器告诉你什么?我想它说的不仅仅是“它不工作”,你的编译器告诉你什么?我想它说的不仅仅是“它不起作用”太好了!这很有意义,现在,我可以用shared\u ptr代替常规指针吗?@Adibe7不直接,不可以。但是你可以保护当前的
BuildPresenter
并使公共BuildPresenter共享,调用BuildPresenter
,将指针包装在shared\u ptr
中并返回(它不需要是虚拟的)。这必须为层次结构中的每个类完成。太棒了!这很有意义,现在,我可以用shared\u ptr代替常规指针吗?@Adibe7不直接,不可以。但是你可以保护当前的BuildPresenter
并使公共BuildPresenter共享,调用BuildPresenter
,将指针包装在shared\u ptr
中并返回(它不需要是虚拟的)。但是,必须为层次结构中的每个类执行此操作。