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

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

Войти
Регистрация
Восстановить пароль
 
Divik
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 4
#1

Класс и указатель - C++

27.10.2013, 19:28. Просмотров 396. Ответов 16
Метки нет (Все метки)

Подскажите как правильно вызвать функцию через указатель
Объявить получилось а вот как вызвать не понимаю(

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
#include <iostream>
 
class Matrix
{
private:
    int arr[10][10];
 
public:
    void Set(int x, int y, int value)
    {
        arr[y][x] = value;
    }
};
 
 
 
 
int main()
{
    void (Matrix::*p)(int, int, int);
 
    p = &Matrix.Set;
 
    // Как здесь вызвать функцию Set из класса Matrix через указатель p?
 
 
    return 0;
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.10.2013, 19:28     Класс и указатель
Посмотрите здесь:

Создать список с указателями на поля из двух других списков - C++
Здравствуйте. Есть два списка состоящие из структуры, как поля данных и класса, как указателей на структуру. Есть третий список, который...

Указатель на класс - C++
сли первый класс определён и он должен использовать указатель на второй(который позже определён) как это сделать

Указатель на производный класс - C++
Добрый вечер. Есть вопрос. class Base { }; class Derived : public Base {

Указатель на класс-мембера - C++
Подскажите пример, где проблему можно решить только указателем на класс-мембера. Пока, что для меня это безсмысленная страничка в учебнике.

Указатель на шаблонный класс - C++
Есть ли возможность инициализировать указатель на класс с шаблоном, но не указав при этом тип, ну т.е. написать не так Value_Class...

Указатель на базовый класс - C++
Есть базовый класс и два производных. Так же имеется очередь, в которой хранится как указатели набазовый класс, так и на его наследники. ...

Указатель на виртуальный класс - C++
Например у меня есть виртуальный класс Food и его нащадок Drink: class Food { public: Food (int m) {Weight = m;}; ~Food (); ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
27.10.2013, 19:34     Класс и указатель #2
C++
1
2
3
p = &Matrix::Set;    
Matrix m;
(m.*p)(1, 2, 3);
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
27.10.2013, 19:40     Класс и указатель #3
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
#include <iostream>
 
class Matrix
{
private:
    int arr[10][10];
 
public:
    void Set(int x, int y, int value)
    {
        arr[y][x] = value;
    }
};
 
 
 
 
int main()
{
    typedef void (Matrix::*p)(int, int, int);
 
    p = &Matrix::Set;
 
    // Как здесь вызвать функцию Set из класса Matrix через указатель p?
 
 
    return 0;
}
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 19:41     Класс и указатель #4
Функция, объявленная через указатель, вызывается как обычная функция. Главное её правильно объявить..
Divik
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 4
27.10.2013, 19:47  [ТС]     Класс и указатель #5
Цитата Сообщение от ct0r Посмотреть сообщение
C++
1
2
3
p = &Matrix::Set;    
Matrix m;
(m.*p)(1, 2, 3);
Спасибо! У меня оказывается ошибка была p = &Matrix.Set; Надо через двоеточие ::

Добавлено через 4 минуты
Цитата Сообщение от metaluga145 Посмотреть сообщение
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
#include <iostream>
 
class Matrix
{
private:
    int arr[10][10];
 
public:
    void Set(int x, int y, int value)
    {
        arr[y][x] = value;
    }
};
 
 
 
 
int main()
{
    typedef void (Matrix::*p)(int, int, int);
 
    p = &Matrix::Set;
 
    // Как здесь вызвать функцию Set из класса Matrix через указатель p?
 
 
    return 0;
}
Я не знаю что такое typedef (
henecs
17 / 17 / 0
Регистрация: 19.05.2013
Сообщений: 135
27.10.2013, 19:48     Класс и указатель #6
Цитата Сообщение от metaluga145 Посмотреть сообщение
typedef void (Matrix::*p)(int, int, int);
p = &Matrix.Set;
почему не сделать так?
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
class Matrix
{
private:
    int arr[10][10];
 
public:
    Matrix();
    void Set(int x, int y, int value)
    {
        arr[y][x] = value;
    }
};
Matrix::Matrix()
{
}
C++
1
2
Matrix *p = new Matrix();
p->set(x, y, value);
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 19:50     Класс и указатель #7
Цитата Сообщение от henecs Посмотреть сообщение
почему не сделать так?
Может потому, что это бред сивой кобылы!?
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
27.10.2013, 19:51     Класс и указатель #8
Цитата Сообщение от Divik Посмотреть сообщение
Я не знаю что такое typedef (
не выходя за пределы форума
henecs
17 / 17 / 0
Регистрация: 19.05.2013
Сообщений: 135
27.10.2013, 19:53     Класс и указатель #9
Цитата Сообщение от castaway Посмотреть сообщение
Может потому, что это бред сивой кобылы!?
можно подробнее или сслыки
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
27.10.2013, 19:53     Класс и указатель #10
Цитата Сообщение от Divik Посмотреть сообщение
Я не знаю что такое typedef (
Вводит имя, которое является синонимом типа.
C++
1
2
3
4
typedef void (Matrix::*p)(int, int, int);
p pf = &Matrix::Set;
Matrix m;
(m.*pf)(1, 2, 3);
castaway
Эксперт С++
4881 / 3017 / 370
Регистрация: 10.11.2010
Сообщений: 11,076
Записей в блоге: 10
Завершенные тесты: 1
27.10.2013, 19:54     Класс и указатель #11
Цитата Сообщение от henecs Посмотреть сообщение
можно подробнее или сслыки
ссылки
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
27.10.2013, 19:56     Класс и указатель #12
henecs, чет я вообще не понял Вашего кода. зачем там Matrix::Matrix?

Добавлено через 1 минуту

Не по теме:

капец, как забрать свое "спасибо"?

Divik
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 4
27.10.2013, 19:59  [ТС]     Класс и указатель #13
Цитата Сообщение от ct0r Посмотреть сообщение
Вводит имя, которое является синонимом типа.
C++
1
2
3
4
typedef void (Matrix::*p)(int, int, int);
p pf = &Matrix::Set;
Matrix m;
(m.*pf)(1, 2, 3);
Это получается что после вот этой строчки typedef void (Matrix::*p)(int, int, int);
p будет синоним на функцию?
ct0r
Игогошка!
1768 / 670 / 42
Регистрация: 19.08.2012
Сообщений: 1,284
Завершенные тесты: 1
27.10.2013, 20:02     Класс и указатель #14
Цитата Сообщение от Divik Посмотреть сообщение
p будет синоним на функцию?
На тип - указатель на функцию-член класса Matrix, которая принимает три числа типа int и возвращает void.
metaluga145
243 / 244 / 20
Регистрация: 08.04.2013
Сообщений: 927
27.10.2013, 20:03     Класс и указатель #15
Divik, на указатель функции
Divik
0 / 0 / 0
Регистрация: 27.10.2013
Сообщений: 4
27.10.2013, 20:06  [ТС]     Класс и указатель #16
Хорошо мне помогли.) На этом пока хватит. С этими typedef еще почитаю в книге. А сейчас трудно разобраться.
Спасибо за помощь!
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
27.10.2013, 20:07     Класс и указатель
Еще ссылки по теме:

Указатель на класс: Человек и Организация - C++
Передо мной поставлена задача создать 2 класса - Человек и Организация. В первом классе создать указатель на организацию и нулевой...

Передать в DLL указатель на класс - C++
В основной программе хочю сделать чтото типа class fprognoz { public: double End_chen; int rezult; __int64 ...

Описать класс *предметный указатель* - C++
Описать клас *предметный указатель*. Каждый компонент указателя содержит слово и номер страницы, на которых ето слово встречаеться....

Указатель на класс, создавший объект - C++
Добрый вечер! Возник следующий вопрос: Пусть есть 2 класса: class A { public: A(); ~A(); };

Обобщенный указатель на шаблонный класс - C++
Здравствуйте. Имеется класс template &lt;typename T&gt; class TListManager { protected: TList &lt;T&gt; *head; TList &lt;T&gt; *tail; ...


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

Или воспользуйтесь поиском по форуму:
metaluga145
27.10.2013, 20:07     Класс и указатель
  #17

Не по теме:

Divik, обращайтесь) рады помочь)

Yandex
Объявления
27.10.2013, 20:07     Класс и указатель
Ответ Создать тему
Опции темы

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