setPosition(3,4)在方法foo()中工作,但在衍生的虚拟绘制方法中不起作用 矩形类。这不是C ++中的一个功能吗?谢谢。
class Shape
{
public:
int posX, posY;
public:
virtual void draw() const = 0;
void setPosition(int pX, int pY)
{
posX = pX;
posY = pY;
}
};
class Rectangle : public Shape
{
public:
virtual void draw() const
{
cout << "Drawing rectangle at " << posX << " "
<< posY << endl;
setPosition(3,4);
}
void foo()
{
setPosition(3,4);
}
};
答案 0 :(得分:0)
您无法使用const
方法调用非const
方法,因为这不会使对象保持不变。
如果draw
需要致电setPosition
并因此更改Rectangle
,则无法将其声明为const
。