LINUX.ORG.RU

Вызвать метод динамически получая его имя.


0

0

Всем привет! Как в c++ можно выполнить следующие маневры. Например в программе есть функция


int test(int k,string d)
{
  return 0;
}


int main()
{
  // имя метода который нужно вызвать!
  string method "test";
  

  // и собственно вопрос как вызвать метод test если его имя получаю
  // через string
  return 0;
}

Ответ на: комментарий от anonymous

> Черезжопие какраз начинается, когда система не видит различия в названиях функция и следует этой «мягкой» политике.

черезжопие начинается, когда «программист» пишет на каком-то языке и совершенно не знает языка, на котором пишет

korvin_ ★★★★★
()
Ответ на: комментарий от anonymous

Получается если у меня две функции test и Test, чтобы вызвыать вторую надо всегда экран ставить? Зачем такое черезжопие?

Нет у тебя двух функций test и Test. Есть TEST, которую задали, как угодно (test, TeSt, etc), либо есть |test| и |Test|.

mv ★★★★★
()
Ответ на: комментарий от korvin_

>лол. пример опечатки покажи?

Сам напрягись и придумай.

а страуструп пусть поблюёт, ему полезно


Мне почему-то кажется, что у этого дядьки поболее твоего опыта в разработке серьёзных вещей. Так что скорее прислушаюсь к его мнению.

anonymous
()
Ответ на: комментарий от anonymous

> Сам напрягись и придумай.

т.е. показывать нечего?

Мне почему-то кажется, что у этого дядьки поболее твоего опыта в разработке серьёзных вещей. Так что скорее прислушаюсь к его мнению.

когда кажется, стоит просто подождать пока отпустит.

korvin_ ★★★★★
()

В языке, где нет рефлексии, это всегда можно сделать только банально. Используйте нормальные ОО языки, а не препроцессоры.

svu ★★★★★
()
Ответ на: комментарий от svu



В языке, где нет рефлексии,


CINT (C/C++ interpreter)
http://root.cern.ch/drupal/content/cint
обеспечивает C/C++ Reflection/RTTI (RunTimeTypeInfotmation)
т.е. используя CINT (~1Mb lib) - это елементарно

а страуструп пусть поблюёт, ему полезно


Дискуссия моего приятеля с Бьярном по-поводу будущего C++
и место в нём Reflection
http://root.cern.ch/drupal/content/c-discussion-bjarne-stroustrup-part-2

Valeriy_Onuchin ★★
()
Ответ на: комментарий от Valeriy_Onuchin

> CINT (C/C++ interpreter)
Ну это уже не есть честные плюсы. Да, бывают всякие managed c и пр, там можно вводить плюшки типа рефлексии, но они только там и будут работать.

и место в нём Reflection

Спасибо, интересно. Только непонятно, что будут делать со священной коровой совместимости с С (и с хвостом этой коровы, class = struct)

svu ★★★★★
()

funcall... intern... зачем это всё, когда есть PHP?

function fun1() {echo "fun1\n";}
function fun2() {echo "fun2\n";}
$fun = 'fun1';
$fun(); // fun1
$fun = 'fun'.strval(1+1);
$fun(); // fun2

sli
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.