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

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

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

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

01.03.2014, 19:56. Просмотров 364. Ответов 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
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
01.03.2014, 19:56
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Массив указателей на методы класса (C++):

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

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

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

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

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

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

Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
DrOffset
7152 / 4293 / 968
Регистрация: 30.01.2014
Сообщений: 7,093
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();
}
1
DU
1483 / 1059 / 45
Регистрация: 05.12.2011
Сообщений: 2,279
01.03.2014, 20:15 #3
у вас массив указателей свободных функций. это не то же самое, что массив указателей
на методы. и ваша в случае указателей на методов таким макаром не решается.
без объекта вы метод этого объекта не вызовете. есть альтернатива: использовать массив std::function<bool(bool)>.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
01.03.2014, 20:15
Привет! Вот еще темы с ответами:

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

Можно ли динамически выделить память под массив указателей, на объекты класса? - C++
Прошу прощения если не правильно назвал вопрос. Не знаю как правильно сформулировать. Можно ли строчку VisualizationTools* VT; заменить...

Массив указателей на массив строк и сортировка массива указателей - C++
Добрый день. Поступил вопрос. Есть задача. У нас встроенный массив char mass;.Мы вводим строки до тех пор, пока не будет заполнен массив...

по поводу указателей. Как правильно задавать массив указателей и его удалять? - C++
Т.е., например создаю указатель: TPoint *p_Point=NULL; а если массив? TPoint *p_MassPoint; //=?; как массив обнулить не ясно ...


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

Или воспользуйтесь поиском по форуму:
Ответ Создать тему
Опции темы

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