我遇到了 MFC C++ 多态性,这是我的问题:
我有一个类,比如说 A,它实现了很多有用的东西,但是我需要从中实例化的每个对象都需要一些定制,所以我决定派生我的每个类(例如:A1、A2... )。现在,这些对象的初始化需要一些对所有子类都相同的操作,所以我构建了一个静态方法来完成这项任务,问题就来了:
void CFastInit::FastGrid( const CStatic &stPosition, A *pGrid, UINT nID, CWnd *pWnd )
{
stPosition.GetClientRect( rctGriPos );
stPosition.MapWindowPoints( pWnd, rctGriPos );
pGrid->Create( WS_CHILD | WS_VISIBLE, rctGriPos, pWnd, nID );
pGrid->SetWholeRowSel();
}
从调试器我可以看到 pGrid 是正确的类型( A1, A2... ),但是调用:
pGrid->Create(
对 A::Create 而不是 A1::Create 或 A2::Create 完成。有解决方法吗?