每当我尝试运行此代码时,此代码都会返回错误.有人可以帮帮我吗.
struct m
{
virtual int s( )
{
return 1;
}
};
struct n : public m
{
int s( )
{
return 2;
}
};
int o( )
{
n* p=new m;
m* q=dynamic_cast<p>;
return q->s( );
}
Run Code Online (Sandbox Code Playgroud)
应该使用这些C++强制转换运算符
dynamic_cast<newType>(variable)
Run Code Online (Sandbox Code Playgroud)
在你的情况下,
m* q = dynamic_cast<m*>(p);
Run Code Online (Sandbox Code Playgroud)
顺便说一句,你迷惑的作用m和n?n* p = new m是一个语法错误,因为基类实例不能隐式转换为派生类实例.事实上,base→derived 是你实际需要的情况dynamic_cast,而不是相反的方式(不需要强制转换).
另外,考虑为对象提供有意义的名称.