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

Оператор [] массива указателей на процедуры и методы - C++

Восстановить пароль Регистрация
Другие темы раздела
C++ Составить программу, которая по заданным координатам точки (x,y) определяет на какой линии или внутри какой области находится эта точка http://www.cyberforum.ru/cpp-beginners/thread662534.html
Построить чертеж. Обозначить получившиеся области плоскости. Составить программу, которая по заданным координатам точки (x,y) определяет на какой линии или внутри какой области находится эта точка.
C++ Шахматы, конь Всем доброго времени суток! Буду честен - в универе задали задачу на макс.балл(все предыдущие сделал, но с этой возникла проблемка). Условие следующее: Поле шахматной доски определяется парой натуральных чисел (номер вертикали – номер горизонтали) из диапазона 1-8. Конь, расположенный на поле (k, l), делает 2 хода. Угрожает ли он полю (m, n)? Собственно просьба: помогите составить сам... http://www.cyberforum.ru/cpp-beginners/thread662526.html
При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки. C++
/* 1) int a; int *b=&a; cout<<b<<endl; 2) char a; char *b=&a; cout<<b; */ Надо просто выдать адреса переменных. При работе с числами всё нормас. При работе с символами адрес вместо адреса иероглифы, а с символьными массивами вобще ошибки.
Составить программу для вычисления значения выражения (без использования макрокоманды MAX и MIN) C++
C++ задачка с натуральными числами http://www.cyberforum.ru/cpp-beginners/thread662512.html
программа, которая в записи натурального числа минимальным вычеркиванием цифр оставляет подряд идущие цифры, которые 1) образ отрезок натурального ряда; 2) образ строго возрастающую последовательность
C++ Заполнить двумерный массив заполнить двухмерный массив размерности по правилу: 6 1 1 1 1 5 2 6 1 1 5 4 2 2 6 5 4 4 2 2 5 6 4 4 2 5 3 3 6 4 5 3 3 3 3 6 подробнее

Показать сообщение отдельно
SavoninDima
0 / 0 / 0
Регистрация: 22.03.2012
Сообщений: 5
03.10.2012, 00:52     Оператор [] массива указателей на процедуры и методы
Доброго времени суток. Проблема заключается в следующем: нужно написать класс, который хранил бы в себе оператор обращения к массиву класса по индексу. Все это делается для создания массива функцию класса Keyboard, который можно было бы инициализировать, изменять и вызывать. Запись должна принимать следующий вид:
1) Инициализация:
C++
1
Keyboard[KEY_ENTER] = display;
2) Вызов:
C++
1
2
3
4
void keyboard(unsigned char key, int, int)
{
    Keyboard[key]();
}
Вот сам класс (*.h):
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
#define FUNCTION_MAX 255
class cKeyboard
{
private:
    void (*Function[FUNCTION_MAX])(void);
    typedef void (*TFunPtr)(void);
 
public:
    cKeyboard();
    ~cKeyboard();
 
public:
    void Catch(unsigned char _Key);
    void Catch(int _Key);
    TFunPtr& operator [] (int _Index);
};
Исполнитель (*.cpp):
C++
1
2
3
4
5
6
7
8
9
Engine::cKeyboard::TFunPtr& Engine::cKeyboard::operator [] (int _Index)
{
    if (_Index >= 0 && _Index <= FUNCTION_MAX - 1)
    {
        return Function[_Index];
    }
 
    printf("ERROR %s: Wrong Index (0 to 255)\n", __FUNCTION__);
}
Если производить инициализацию процедуры, то все отлично, но если производить инициализацию или вызов метода, то программы выдает ошибку следующего рода:
Ошибка 1 error C3867: Print::Show: в вызове функции отсутствует список аргументов; используйте "&Print::Show" для создания указателя на член c:\users\dmitr_000\documents\visual studio 2012\projects\gmenu\gmenu\main.cpp 128 1 GMenu
Ошибка 2 error C2440: =: невозможно преобразовать "void (__thiscall Print::* )(void)" в "Engine::cKeyboard::TFunPtr" c:\users\dmitr_000\documents\visual studio 2012\projects\gmenu\gmenu\main.cpp 128 1 GMenu
Вызывается это все отсюда:
C++
1
2
3
4
5
6
7
8
class Print
{
public:
    void Show(void)
        { std::cout << "Hello World!\n"; }
};
 
Print P;
Какие есть решения данной проблемы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
 
Текущее время: 23:10. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru