虚函数可以设置基类的publicdata成员吗?

时间:2017-11-05 02:39:51

标签: c++ function virtual

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);
    }
    };

1 个答案:

答案 0 :(得分:0)

您无法使用const方法调用非const方法,因为这不会使对象保持不变。

如果draw需要致电setPosition并因此更改Rectangle,则无法将其声明为const