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

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

Войти
Регистрация
Восстановить пароль
 
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
#1

Массивы указателей в классе. - C++

06.11.2011, 22:57. Просмотров 519. Ответов 5
Метки нет (Все метки)

Приветствую. Подскажите пожалуйста, как объявить и инициализировать массив указателей в классе.
Пишу например вот так
C++
1
bool (*arrHand[ 6 ]) ( const int [ dealSize ][ dealSize ] ) = { straightOnHand, };
Имя функции подчеркивается красной волнистой линией в 2010 студии с ошибкой: значение типа "bool (DeckOfCards::*) ( const int (*arr)[5U] )" нельзя использовать для инициализации сущности типа "bool (*) ( const int (*)[5U] )".
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2011, 22:57     Массивы указателей в классе.
Посмотрите здесь:

Работа с массивом указателей в классе C++
Массивы указателей C++
Инициализация массива указателей в классе C++
Иерархия классов: массивы указателей C++
Массивы указателей на объекты как данные класса C++
Массив указателей на функцию в классе C++
C++ Указатели на массивы: В чем принципиальное различие между объявлениями указателей?
C++ Переделать программу через массивы указателей
C++ Массивы указателей и ошибка Access violation reading location
Typedef и массивы указателей на функции C++
C++ Массивы указателей
C++ Массивы указателей на функции-члены не работают

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Bers
Заблокирован
06.11.2011, 23:07     Массивы указателей в классе. #2
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
 
   class CTest
    {
    public: CTest() 
            { 
                /*здесь идет настройка уже созданного массива*/ 
                memset(myTest, 0, sizeof(myTest) );
            }
        int* myTest[10][10];
    };
 
 
    CTest te;
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
06.11.2011, 23:20  [ТС]     Массивы указателей в классе. #3
Все равно подчеркивается красной линией с той же ошибкой, и соответственно не компилируется.

Добавлено через 8 минут
Ой извиняюсь, забыл совсем, вылетело из головы, массив указателей на функции.
Bers
Заблокирован
06.11.2011, 23:32     Массивы указателей в классе. #4
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
   
 class CTest
    {
        //объявим, что ptrFunc - это указатель на функцию
        typedef void (*ptrFunc)(); 
    public: CTest() 
            { 
                /*здесь идет настройка уже созданного массива*/ 
                memset(myArray, 0, sizeof(myArray) );
            }
            ptrFunc myArray[10]; //объявим массив из десяти указателей на функцию
    };
 
 
    CTest te;
Toshkarik
1139 / 856 / 51
Регистрация: 03.08.2011
Сообщений: 2,384
Завершенные тесты: 1
06.11.2011, 23:39  [ТС]     Массивы указателей в классе. #5
Ясно, спасибо, видать рано еще мне до этого. Просто в книги массив указателей на функции объявлялся так как выше написал, но это было в main а не в классе. Думал в классах так же.
Bers
Заблокирован
06.11.2011, 23:49     Массивы указателей в классе. #6
можно и так записать:

C++
1
2
3
4
5
6
7
8
9
class CTest
    {
    public: CTest() 
            { 
                /*здесь идет настройка уже созданного массива*/ 
                memset(myArray, 0, sizeof(myArray) );
            }
            void (*myArray[10])() ; //объявим массив из десяти указателей на функцию
    };
Но вариант с typedef намного приятнее и легче читается.
А вообще, вы конечно правильно делаете, что учите эту муштру. Но по жизни старайтесь не использовать указатели на функции. Вместо этого в с++ есть другие более простые и элегантные способы, как сделать тоже самое, только проще и эффективнее.
Yandex
Объявления
06.11.2011, 23:49     Массивы указателей в классе.
Ответ Создать тему
Опции темы

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