常成员函数内,如其将子类对象的指针作为父类对象的指针返回会报错
常成员函数内,如果将子类对象的指针作为父类对象的指针返回会报错?
现在有如下代码
上述代码在 vs2008 vsts中编译有C2440错误。 当函数get 去除 const 属性后,编译通过。 这是何解?
------解决方案--------------------
const 修饰符表示里面的成员变量为只读。
返回时,进行隐式强制类型转换,但是由于要转换的变量为只读,所以转换失效。
现在有如下代码
class BaseA
{
//...
};
class DerivedB : public BaseA
{
//...
};
class C : public ********
{
public:
virtual const BaseA * Get() const
{
return &m_stDerivedB; // C2440; 'return' cannot convert from 'const DerivedB *__w64' to 'const BaseA*'
}
private:
DerivedB m_stDerivedB
}
上述代码在 vs2008 vsts中编译有C2440错误。 当函数get 去除 const 属性后,编译通过。 这是何解?
------解决方案--------------------
const 修饰符表示里面的成员变量为只读。
返回时,进行隐式强制类型转换,但是由于要转换的变量为只读,所以转换失效。