丢失我继承的类'重写的功能:转换为基类,然后通过引用传递

时间:2015-09-04 23:33:11

标签: c++ inheritance

所以我有这样的东西... C ++ MFC VS 110

class CObList //this is the Windows DLL class
{
   POSITION AddTail(CObject* newElement);
};

CMyClass : public CObList
{
   virtual POSITION AddTail(CObject* pObject);
};


function(CObList& list)
{
   CObject ob;
   list.AddTail(&ob);
}

main()
{
   CMyClass list;
   function(list);
}

当main :: function()运行并调用AddTail()时,CMyClass :: AddTail()没有运行...如果重要,CObList和function()都在DLL中。

AddTail在CObList中不是虚拟的......我可以不覆盖吗?或者是因为我将我的CMyClass转换为CObList&它失去了高CMyClass功能?我通常将指针传递给基类,他们发现高级函数就好了。

1 个答案:

答案 0 :(得分:1)

您需要将您的功能设为虚拟,如:

class CBase
{
   virtual protected void AddTail(CObject* ob);
};

我相信这会成功。