Re[8]: Чем заменить виртуальные функции?
От: bnk СССР http://unmanagedvisio.com/
Дата: 14.07.23 17:31
Оценка:
Здравствуйте, zelenprog, Вы писали:


bnk>>Если это скрипт, возможно есть функция типа "EVAL", которая позволяет создать и выполнить произвольный кусок текста в рантайме.

bnk>>Тогда имя функции можно подставить в виде строки.

Z>Да, скриптовый язык.

Z>Есть похожая команда, которая выполняет произвольный код в виде текста.

Z>Но я не могу понять, какой код надо выполнить?

Z>Суть в том, чтобы находясь в базовом классе каким-то образом получить ссылку на объект-наследник.

Ну я имел в виду что-то такое не прокатит:

class Base {
  string func_name;

  Base() { func_name = "base_foo" }
  function base_foo() {}
}

class Child extends Base {
  Child() { func_name = "child_foo" }
  function child_foo() {}
}

function bar(Base x) {
  EVAL("x." + x.func_name + "()")
}


Если и конструкторов тоже нет, можно при инициализации объекта поле задать.
Отредактировано 14.07.2023 17:52 bnk . Предыдущая версия .
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.