Войти
ПрограммированиеФорумОбщее

Проверка существования переменной или функции-члена

Страницы: 1 2 3 4 5 6 Следующая »
#0
15:10, 19 дек. 2008

Каким образом можно реализовать такого рода проверку в C++ без привязки к платформам? Аналог php isset() и method_exists(). Первое что приходит в голову - каким образом при создании объекта можно получить имена внутренних фукнций и переменных?


#1
15:17, 19 дек. 2008

Я уже сказал там где тема родилась - только кривыми костылями, я продолжаю настаивать на этом.
И ты так и не привел конструкцию в которой тебе необходима функция method_exists(), покажешь? Код на PHP сойдет.

#2
15:19, 19 дек. 2008

majesty
Для какого языка программирования эта проблема?
>каким образом при создании объекта можно получить имена внутренних фукнций и переменных?
Это не реально так как при компиляции программы имена функций не сохраняются.

Есть правда один способ (ход конём) .
Создавай DLL потом получай все экспортируемые функции и выполняй если требуется.
Можно также и в EXE делать функции экспортируемыми, но что из этого получится я незнаю.
Прикольно получаем все функции которые мы экспортируем и вызываем их. ИЗВРАЩЕНИЕ :)

#3
15:31, 19 дек. 2008

All
это можно сделать на этапе компиляции в дебаге на шаблонах
тока зачем?
в дотнете можно в рантайме

#4
15:32, 19 дек. 2008

Забыл написать что интересует С++ реализация, поправил.

KpeHDeJIb
Я приводил обобщенный пример, я не знаю как без этого можно эффективно работать. Например существует клиент, который отсылает в пакетах запросы. Примером может быть передвижение игрока, бой, сохранение и другие игровые детали. Каждый игрок должен представлять собой объект и выполнять действие используя для этого объект содержащий реализацию всех действий или наследовать класс с реализацией. В любом случае, если мне в данном случае приходит запрос, я должен узнать - могу ли я его выполнить, существует ли метод, реализующий данный запрос? Таких примеров может быть много, когда действие определяет пользователь.

#5
15:33, 19 дек. 2008

majesty
действительно, зачем?

#6
15:36, 19 дек. 2008

majesty
имхо ты несешь бред не имеющий ни какого отношения к С++
как ты вообще объекты передавать собрался не скажешь?

#7
15:41, 19 дек. 2008

cNoNim
По указателю. Этот бред успешно работает в РНР и как я думаю, в других языках. Сомневаюсь что такой могучий язык C++ не имеет такой возможности, или вы считаете что правильнее делать проверку типа if (method_name == "name") ... else ... ; или switch пользовать?

#8
15:43, 19 дек. 2008

cNoNim
видимо он хотел бы передавать void*, а потом проверять в рантайме есть ли у конкретно этого объекта такая-то функция :)

majesty
учи ООП

#9
15:46, 19 дек. 2008

majesty

в C++ есть dynamic_cast, который способен определить является ли объект объектом определенного класса. если является - понятно что все публичные методы из этого класса нам доступны.

#10
15:47, 19 дек. 2008

OMG чувак! Пример будет или нет?

#11
15:51, 19 дек. 2008

majesty
погугли сериализация, десериализация и remouting
=A=L=X=
чтото ты не то советуешь...
ты собрался применять тайп кастинг к тому, что получил из пакета?

#12
15:53, 19 дек. 2008

majesty
  Тебе идеально бы подошла Java. Вот уж точно без привязки к платформам. И механизм распознавания типов во время выполнения там есть.

majesty
>Этот бред успешно работает в РНР и как я думаю, в других языках.
  PHP интерпретируемый язык (хотя допускает компиляцию), как и Java. А вот С++ компилируемый, поэтому вся лишняя информация, такая как имена методов отсекается при компиляции, чтобы не захламлять драгоценные ресурсы.

$tatic
>учи ООП
  А это здесь вообще причём? Java ещё более объектно-ориентирован, чем С++ и допускает подобные вещи, а С++ нет.

=A=L=X=
  Ещё в С++ есть typeof, что это я плохо понимаю, но всё равно не поможет. Есть ещё неуклюжие библиотеки, пытаюциеся протащить RTTI в С++.

#13
15:57, 19 дек. 2008

majesty
>или вы считаете что правильнее делать проверку типа if (method_name == "name") ... else ... ; или switch пользовать?
Именно так) Только вместо строк лучше использовать циферки (#define METHOD_NAME 1), это более в стиле C/C++.

#14
16:00, 19 дек. 2008

Zefick
пруф? про typeof?

Страницы: 1 2 3 4 5 6 Следующая »
ПрограммированиеФорумОбщее

Тема в архиве.