LINUX.ORG.RU

История изменений

Исправление ilammy, (текущая версия) :

Что бы не дублировать код и не плодить кучи атрибутов у класса я сделал класс Transform

Вот тут я потерял ход мысли. Что за код будет дублироваться? Реализация setPosition() в каждом конкретном классе, который реализует Movable? Ну сделай миксин типа

class Moveable
{
public:
    Moveable(const vec3 &position) : m_position(position) {}
    virtual ~Moveable() {}

    virtual void setPosition(const vec3 &value)
    {
        m_position = value;
    }

protected:
    vec3 m_position;
};
И потом уже
class Point : public Moveable
{
public:
    Point() : Moveable(vec3(0, 0, 0)) {}

    // ...
};

Исправление ilammy, :

Что бы не дублировать код и не плодить кучи атрибутов у класса я сделал класс Transform

Вот тут я потерял ход мысли. Что за код будет дублироваться? Реализация setPosition() в каждом конкретном классе, который реализует Movable? Ну сделай миксин типа

class Moveable
{
public:
    Moveable(const vec3 &position) : m_position(position) {}
    virtual ~Moveable() {}

    virtual void setPosition(const vec3 &value)
    {
        m_position = value;
    }

protected:
    vec3 m_position;
};
И потом уже
class Point : protected Moveable
{
public:
    Point() : Moveable(vec3(0, 0, 0)) {}

    // ...
};

Исправление ilammy, :

Что бы не дублировать код и не плодить кучи атрибутов у класса я сделал класс Transform

Вот тут я потерял ход мысли. Что за код будет дублироваться? Реализация setPosition() в каждом конкретном классе, который реализует Movable? Ну сделай миксин типа

class Moveable
{
public:
    Moveable(const vec3 &position) : m_position(position) {}
    virtual ~Moveable() {}

    virtual void setPosition(const vec3 &value)
    {
        m_position = value;
    }

protected:
    vec3 m_position;
};
И потом уже
class Point : protected Moveable
{
public:
    Point() : Moveable(vec3(0, 0, 0)) {}

    // ...
};

Исходная версия ilammy, :

Что бы не дублировать код и не плодить кучи атрибутов у класса я сделал класс Transform

Вот тут я потерял ход мысли. Что за код будет дублироваться? Реализация setPosition() в каждом конкретном классе, который реализует Movable? Ну сделай миксин типа

class Moveable
{
public:
    Moveable(const vec3 &position) : m_position(position) {}
    virtual ~Moveable() {}

    virtual void setPosition(const vec3 &value)
    {
        m_position = value;
    }

protected:
    vec3 m_position;
};
И потом уже
class Point : public Moveable
{
public:
    Point() : Moveable(vec3(0, 0, 0)) {}

    // ...
};