Форум программистов, компьютерный форум CyberForum.ru

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
KV-1
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 20
#1

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

01.03.2014, 19:56. Просмотров 320. Ответов 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)"

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

Заранее спасибо за ответы.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2014, 19:56     Массив указателей на методы класса
Посмотрите здесь:

C++ Передача указателей на функции в экземпляр класса
Двухмерный массив указателей из элементов объектов класса C++
Оператор [] массива указателей на процедуры и методы C++
Присваивание указателей, вызов оператора присваивания класса C++
Массив указателей на методы класса C++
Массивы указателей на объекты как данные класса C++
C++ Вектор из указателей абстракттного класса
Массив указателей на члены класса C++
C++ Передача указателей в методы по ссылке
C++ Методы класса внутри определения класса
C++ Динамический массив указателей на объекты класса
C++ Можно ли динамически выделить память под массив указателей, на объекты класса?

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6820 / 4031 / 924
Регистрация: 30.01.2014
Сообщений: 6,847
01.03.2014, 20:14     Массив указателей на методы класса #2
Если классы совсем разные, то никак.
Используй наследование и виртуальные функции.

Добавлено через 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();
}
DU
1479 / 1055 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.03.2014, 20:15     Массив указателей на методы класса #3
у вас массив указателей свободных функций. это не то же самое, что массив указателей
на методы. и ваша в случае указателей на методов таким макаром не решается.
без объекта вы метод этого объекта не вызовете. есть альтернатива: использовать массив std::function<bool(bool)>.
Yandex
Объявления
01.03.2014, 20:15     Массив указателей на методы класса
Ответ Создать тему
Опции темы

Текущее время: 18:17. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru