看看下面的一段代码。
//Base Cls declaration:
class CmdParser_c
{
public:
CmdParser_c(){}
virtual ~CmdParser_c(){}
BOOLEAN ParseInputCmd(UINT8*);
virtual BOOLEAN ProcessInputCmd(UINT8* );
virtual BOOLEAN ProcessInputCmdArgs(UINT8* cmdList_ptr, UINT8 noOfArgs);
}
//One of its member function definition:
BOOLEAN CmdParser_c::ParseInputCmd(UINT8* cmdBuff_ptr)
{
CmdParser_c *tstObj[MAX_PARSERS]; // <-- creating array of base cls ptr
RTCcmdParser_c rtcTstObj;
UiParser_c uiP;
tstObj[0] = &rtcTstObj; // <-- assigning child1 cls obj
tstObj[1] = &uiP; // <-- assigning child2 cls obj
if (tstObj[0]->ProcessInputCmd(&inputCmd_ptr[0][0]))
{
// do something
}
else if (tstObj[1]->ProcessInputCmd(&inputCmd_ptr[0][0]))
{
// do something
}
}
代码正在运行。没有问题。我的问题是在其自己的成员函数中为类创建 ptr 数组以实现运行时多态性是否有任何缺陷?这个逻辑有什么问题吗?