Статические функции

lom 16.03.2004 - 11:10 | Есть статический метод класса. Было бы неплохо сделать, что бы он имел доступ к нестатическим полям этого класса. Это вообще возможно ?
Terminator 1 - 16.03.2004 - 11:13 | [0] Как ты это представляешь? В нестатическом методе есть скрытый параметр - объект. Чему он будет равен?
Сергей 2 - 16.03.2004 - 11:15 | Передавай ему указатель на объект, к полям которого хочешь иметь доступ. Собственно про это говорится и в [1].
lom 3 - 16.03.2004 - 11:16 | Не могу ничего передавать - формат передаваемой функции фиксированн. вобщем задача такая - указатель на функцию класса передаётся некой функции, не являющейся методом класса. что бы это стало возможным, делаю метод класса статическим. но в этом случае доступа к полям класса нету .. как быть ??!!
Сергей 4 - 16.03.2004 - 11:31 | Разруливать :) Если у тебя гарантированно всего лишь один экземпляр класса - сделай его статическим (для желающих сделать это "правильно" рекомендую в сети поискать по слову "шаблон singleton") и работай непосредственно с ним. В других случаях - использовать что-то вроде таблицы соответствий, где будут храниться некие идентификаторы объектов и указатели на них.
VaS 5 - 16.03.2004 - 11:38 | Если речь идет о Делфи, то указатель на нестатический метод класса можно передавать как TMethod (запись, содержащая два указателя - на код и на данные (объект класса)) или же просто как тип procedure(function)(...) of object.
lom 6 - 16.03.2004 - 11:39 | нет, VC
Cool Ace 7 - 16.03.2004 - 12:07 | Опиши задачу, сто процентов есть альтнрнативное решение
virl 8 - 16.03.2004 - 12:15 | На 1С - это делается элементарно!
Cool Ace 9 - 16.03.2004 - 12:21 | Угу, а на русском еще проще:)
Vovchik 10 - 16.03.2004 - 12:23 | Visual Studio 1C++ :)) Шутка :-) . class A { public: static void F() {}; void G() {}; }; ... void main() { A::F(); // а вот можно ли вызвать также A::G(); ? } . А если внутри F() вызывается несуществующая G() ? Это же сказал Сергей до меня.
Sabrian 11 - 16.03.2004 - 13:32 | Есть старый "добрый" дедовский способ - передавай адрес обьекта класса в глобальной переменной.

>>