我试图使用typeid()但我不断收到错误C3867

时间:2017-09-24 05:03:28

标签: c++ downcast typeid typeinfo

我正在尝试使用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.那么什么呢?

0 个答案:

没有答案