powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли передать классу A функцию-член класса B ?
8 сообщений из 8, страница 1 из 1
Можно ли передать классу A функцию-член класса B ?
    #34429164
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Не хочется передавать классу B указатель на класс A целиком, т.к. ему понадобиться вызывать только один метод класса A. Можно ли передать ему указатель на нужную ф-ию класса А ?
...
Рейтинг: 0 / 0
Можно ли передать классу A функцию-член класса B ?
    #34429208
grieg
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1. И откуда эта член-функция в таком случае должна получать неявный параметр this? Или она статическая?
2. Какая разница, какой указатель. Они по размеру скорей всего совпадут.
...
Рейтинг: 0 / 0
Можно ли передать классу A функцию-член класса B ?
    #34429210
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
grieg1. И откуда эта член-функция в таком случае должна получать неявный параметр this? Или она статическая?
2. Какая разница, какой указатель. Они по размеру скорей всего совпадут.

1. Если бы я знал откуда, то знал бы как сделать)) Нет, она не статическая.
2. Разница не в размере. Просто мне было бы так удобно, поэтому я предположил, что может есть такой механизм, о котором я не знаю.
...
Рейтинг: 0 / 0
Можно ли передать классу A функцию-член класса B ?
    #34429430
Фотография blinded
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А вот не выйдет
1) данные все равно принадлежат бъекту класса
2) а ежели у тебя полиморфный объект?
...
Рейтинг: 0 / 0
Можно ли передать классу A функцию-член класса B ?
    #34429460
Тынц.
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
...
Рейтинг: 0 / 0
Можно ли передать классу A функцию-член класса B ?
    #34429548
ErV
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
TubrikНе хочется передавать классу B указатель на класс A целиком, т.к. ему понадобиться вызывать только один метод класса A. Можно ли передать ему указатель на нужную ф-ию класса А ?

В стандартном (ISO) C++ можно только так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
#include <stdio.h>

class A{
public:
  void func(void){
    printf ("inside A->func()");
  }
};

class B{
public:
  void func(A& a, void (A::*param)(void)){
    (a.*param)();
  }
};

int main(int argc, char **argv){
  A a;
  B b;
  b.func(a, &A::func);
  return  0 ;
}

Однако в Boland C++ Builder (версия 6 и выше) должно существовать нестандартное расширение, позволяющее вызывать функцию из класса передавая только один указатель. Таким методом там обьявлены все события для форм (Event'ы), рекомендую залезть в исходники/примеры и посмотреть, например, как выглядит обьявлениеTNotifyEvent. В Delphi это было "function of object", как обьявлено в билдере - можете посмотреть сами.
Шутка в том, что в Delphi 5-6 такой указатель занимал 8 байт вместо 4х на 32 битной системе, так как он внутренне представлен как указатель на базу класса (4 байта) и указатель на метод класса (ещё 4 байта). Так что особой разницы нет :)
...
Рейтинг: 0 / 0
Можно ли передать классу A функцию-член класса B ?
    #34430093
Фотография MasterZiv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Tubrik пишет:
> Не хочется передавать классу B указатель на класс A целиком, т.к. ему
> понадобиться вызывать только один метод класса A. Можно ли передать ему
> указатель на нужную ф-ию класса А ?

То, что тебе нужно - Interface. Это паттерн проектирования такой.
Называется в GoF-е "Brige".
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Можно ли передать классу A функцию-член класса B ?
    #34431102
Tubrik
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем спасибо)
...
Рейтинг: 0 / 0
8 сообщений из 8, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Можно ли передать классу A функцию-член класса B ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]