可视C++指针机制 - 错误 2440

visual C++ pointer mechanism - error 2440

本文关键字:错误 2440 机制 C++ 指针 可视      更新时间:2023-10-16

可能的重复项:
派生类和基类之间的指针到指针的转换?
将派生**转换为基数**,将派生*转换为基数*

我有一个 intf + 类

class IList
{
public:
    virtual IList** GetChildList()=0;
    virtual void SetChildList(IList**)=0;
    ~IList();
};
class CList:public IList
{
    CList** m_lst;
public:
    IList** GetChildList()=0;
    virtual void SetChildList(IList**);
//...
};
IList** CList::GetChildList()
{
    return m_lst;
}

为什么我在 GetChildList 的 MSVC 中收到错误 2440,说"'返回':无法从'CList** **'转换为'IList **'

提前感谢您的帮助!

CList 派生自 IList,因此您可以将 CList* 转换为 IList*。 但是,您无法将 CList** 转换为 IList**。 你需要一个reinterpret_cast。