Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
2 / 2 / 0
Регистрация: 21.09.2013
Сообщений: 20

Массив указателей на методы класса

01.03.2014, 19:56. Показов 969. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Есть несколько объектов разных классов. Каждый из этих классов имеет метод update. Параметры и возвращаемое значение одинаковы.
Как создать массив указателей на эту update, чтобы в зависимости от какого-нибудь счётчика вызывать update у разных объектов?

C++
1
bool (*F[3])(bool) = {obj1.update, obj2.update, obj3.update};
вызывает ошибку
1>main.cpp(66): error C2440: инициализация: невозможно преобразовать "overloaded-function" в "bool (__cdecl *)(bool)"

Гугл рассказал только как объявить массив указателей на методы одного класса.

Заранее спасибо за ответы.
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
01.03.2014, 19:56
Ответы с готовыми решениями:

Массив указателей на методы класса
Подскажите плз в чём ошибка: class Entrant{ int ID; int mark; int school; int addpt; ...

Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Всем привет. Есть условие задачи: Дан базовый класс Base у которого есть метод my_name, метод выводит сообщение This is Base class. От...

как сделать чтобы объект производного класса сам себя добавлял в список или массив указателей базового класса?
я хотел так, но программа просто падает void Student::add(Base** head) { cout << "I here" << endl; this->setName(); //все...

2
19500 / 10105 / 2461
Регистрация: 30.01.2014
Сообщений: 17,816
01.03.2014, 20:14
Если классы совсем разные, то никак.
Используй наследование и виртуальные функции.

Добавлено через 2 минуты
Как-то так:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
 
class Base
{
public:
    virtual void update() = 0;
};
 
class A : public Base
{
public:
    void update() { std::cout << "A::update()\n"; }
};
 
class B : public Base
{
public:
    void update() { std::cout << "B::update()\n"; }
};
 
class C : public Base
{
public:
    void update() { std::cout << "C::update()\n"; }
};
 
 
int main()
{
    A a;
    B b;
    C c;
 
    Base * arr[3] = {&a, &b, &c};
 
    arr[0]->update();
    arr[1]->update();
    arr[2]->update();
}
1
DU
1500 / 1146 / 165
Регистрация: 05.12.2011
Сообщений: 2,279
01.03.2014, 20:15
у вас массив указателей свободных функций. это не то же самое, что массив указателей
на методы. и ваша в случае указателей на методов таким макаром не решается.
без объекта вы метод этого объекта не вызовете. есть альтернатива: использовать массив std::function<bool(bool)>.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
01.03.2014, 20:15
Помогаю со студенческими работами здесь

Массив указателей на члены класса
Здравствуйте, подскажите, пожалуйста, как корректно использовать массив указателей на члены класса. list.h Объявление...

Массив указателей на функции-члены класса
Задача заключается в том, что в private надо создать статическую переменную символьного типа, в protected просто переменные вещественного...

Динамический массив указателей на объекты класса
Добрый вечер! Нужна помощь У меня имеется класс STROKA(вроде уже готовый,и все хорошо) Только вот никак не могу понять, как создать...

Двухмерный массив указателей из элементов объектов класса
//point1.h #ifndef POINT_H #define POINT_H #include &lt;iostream&gt; class CIntArray { public:

Массив указателей объектов класса и их быстрая сортировка
Приветствую! Собственно, у меня есть: Класс Worker; Динамический массив, хранящий в себе объекты класса Worker; Конструктор...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru