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

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

Восстановить пароль Регистрация
 
KV-1
0 / 0 / 0
Регистрация: 21.09.2013
Сообщений: 20
01.03.2014, 19:56     Массив указателей на методы класса #1
Есть несколько объектов разных классов. Каждый из этих классов имеет метод 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++ Создать массив указателей базового класса и присвоить ему адреса каждого из екземпляров класса
Создать специфицированный шаблон функции, принимающей массив указателей на char и количество самих указателей C++
C++ Передача указателей в методы по ссылке

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6442 / 3816 / 885
Регистрация: 30.01.2014
Сообщений: 6,610
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
1477 / 1053 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.03.2014, 20:15     Массив указателей на методы класса #3
у вас массив указателей свободных функций. это не то же самое, что массив указателей
на методы. и ваша в случае указателей на методов таким макаром не решается.
без объекта вы метод этого объекта не вызовете. есть альтернатива: использовать массив std::function<bool(bool)>.
Yandex
Объявления
01.03.2014, 20:15     Массив указателей на методы класса
Ответ Создать тему
Опции темы

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