Dyikot
@Dyikot

Можно ли иначе скопировать значение указателя?

IProperty* width = new WidthProperty(10);
IProperty* newWidth = nullptr;

Свойств может быть много и точно я не знаю какое может быть. Как пример WidthProperty. Мне требуется скопировать значение из width в newWidth. Я вижу 2 пути:
1) через dynamic_cast проверять то ли это свойство;
2) еще у меня для каждого свойства есть уникальное ID. В теории могу сделать map, в качестве ключа ID и в качестве значения функция которая возращает IProperty*.
Можно ли сделать проще? Или это единственные решения?
  • Вопрос задан
  • 86 просмотров
Решения вопроса 1
maaGames
@maaGames
Погроммирую программы
Добавь в IProperty чисто-виртуальную функцию Copy. А дальше уже каждый конкретный класс себя будет уметь копировать.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
AshBlade
@AshBlade
Просто хочу быть счастливым
Создай декоратор, который при вызове геттера/сеттера будет дополнительно вызывать этот же геттер/сеттер для другого объекта
class CopyingDecorator: public IProperty
{
private:
      IProperty *parent;
      IProperty *child;
public:
      void setValue(int value)
      {
          this->parent->setValue(value);
          this->child->setValue(value);
      }
     int getValue()
     {
          return this->parent->getValue();
     }
}
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы