我正在尝试使用typeid(),但我不断收到错误,我不确定原因。
void RandomAttributes(Shape * S)
{
// pointer need for down casting
MyTriangle * triPtr;
MyRect * rectPtr;
MyCircle * circPtr;
//downcast base class pointer to derived class pointer
if (typeid(*S).name == "MyTriangle")
{
triPtr = dynamic_cast<MyTriangle *>(S);
// reset the rectangle object to some known, legal values
triPtr->SetPosition(p);
triPtr->SetLength(S->GetWindowHeight() / 10);
}
else if (typeid(S).name == "MyRect")
{
rectPtr = dynamic_cast<MyRect *>(S);
// reset the rectangle object to some known, legal values
S->SetPosition(p);
rectPtr->SetLength(S->GetWindowHeight() / 10);
rectPtr->SetWidth(S->GetWindowWidth() / 10);
}
else
{
circPtr = dynamic_cast<MyCircle *>(S);
circPtr->SetPosition(p);
circPtr->SetRadius(S->GetWindowHeight() / 10);
}
}
将一个shape(基类)指针传递给此函数,该函数可以指向Mytriangle,Mycircle或MyRect对象。我认为取消引用指针应该可以工作,但我猜不是。
离。 typeid的(* S)。名称
我已经尝试过S,* S和&amp; S.那么什么呢?