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

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

Войти
Регистрация
Восстановить пароль
 
Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
#1

Непонятки с аргументами функции - C++

21.03.2014, 20:07. Просмотров 256. Ответов 7
Метки нет (Все метки)

Класс:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
class MyStruct
{
public:
    struct Element
    {
        Element * next;
        Element * prev;
        string BookOrMagazine;
        string NameOfBook;
        string Year;
        string PublishingHouse;
        Element();
    };
 
    Element * begin = new Element;
    void ReadToEnd(MyStruct::Element **);
    void ReadToBegin(MyStruct::Element **);
    void DelEverySecond(MyStruct::Element **);
    void Push(MyStruct::Element **);
};
Реализую функции:
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
void MyStruct::Push(MyStruct::Element ** begin)
{
}
 
void MyStruct::ReadToEnd(MyStruct::Element ** begin)
{
}
 
void MyStruct::ReadToBegin(MyStruct::Element ** begin)
{
}
 
void MyStruct::DelEverySecond(MyStruct::Element ** begin)
{
}
main:
C++
1
2
3
4
5
6
7
8
int main(int argc, char* argv[])
{
    MyStruct myStruct;
    void(*p[4])(MyStruct::Element **) =
    { myStruct.ReadToEnd, myStruct.ReadToBegin, myStruct.DelEverySecond, myStruct.Push };
    _getch();
    return 0;
}
Получаю:
Код
error C2440: инициализация: невозможно преобразовать "overloaded-function" в "void (__cdecl *)(MyStruct::Element **)"
На строчке, где объявляю массив функций. Что не так???
Лучшие ответы (1)
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
21.03.2014, 20:07     Непонятки с аргументами функции
Посмотрите здесь:

Переписать, чтобы значения стали аргументами функции - C++
Добрый всем. Вот у меня есть программка но немного не правильный код. Значит вот условие: Написать функцию, находящую корни уравнения...

Непонимание работы с аргументами для функции main - C++
Здравствуйте. В книге Лафоре в теме потоков и фалов есть пример с работой командной строки. // comline.cpp // Демонстрация работы с...

Вывести таблицу значений функции с двумя аргументами - C++
Привет всем. Помогите пожалуйста, в общем ниже я укажу задание и свой код, кто-то может объяснить, что я сделал не так, и что я не...

Указатель на функцию с аргументами, как аргумент другой функции - C++
У меня есть некая функция, которая принимает как аргумент другую функцию typedef void(*func_type)(); start(func_type...

Объявить прототип функции f1 с 2 аргументами-строками и возвращаемым результатом в виде литерного массива - C++
Здрасте всем), есть такая задачка: Объявить прототип функции f1 с 2 аргументами-строками и возвращаемым результатом в виде литерного...

Работа с аргументами ф-й в С++ - C++
Задача: Написать прог. с ф-ей, что сравнивает две строки, заданных в качестве её аргументов (знач. 2-го рядка задать "по умолчанию"), если...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
just_freelance
61 / 37 / 9
Регистрация: 15.03.2014
Сообщений: 315
21.03.2014, 20:11     Непонятки с аргументами функции #2
Цитата Сообщение от Fraxinus Посмотреть сообщение
Element * begin = new Element;
А что это такое вы тут собираетесь делать?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
21.03.2014, 20:33     Непонятки с аргументами функции #3
Сообщение было отмечено автором темы, экспертом или модератором как ответ
Цитата Сообщение от Fraxinus Посмотреть сообщение
На строчке, где объявляю массив функций. Что не так???
Указатель на функцию и указатель на метод класса - это разные вещи.

Добавлено через 9 минут
C++
1
2
3
4
typedef void (MyStruct::*p_method)(MyStruct::Element**);
p_method arr[4] = {&MyStruct::ReadToEnd, &MyStruct::ReadToBegin, &MyStruct::DelEverySecond, &MyStruct::Push};
MyStruct myStruct;
(myStruct.*arr[0])(&myStruct.begin);
Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
24.03.2014, 20:05  [ТС]     Непонятки с аргументами функции #4
alsav22, спасибо за предыдущий ответ. Теперь подскажите пожалуйста в данной ситуацииЖ
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class MyStruct
{
public:
    void ReadToEnd(MyStruct::Element **);
    void ReadToBegin(MyStruct::Element **);
    void DelEverySecond(MyStruct::Element **);
    void Push(MyStruct::Element **);
 
    //функция, в которой надо реализовать массив указателей на остальные 4 функции
    void VoidArr();
 
 
};
Добавил новую функцию. КАК в этой функции создать массив указателей на остальные функции?
C++
1
2
3
4
    void VoidArr()
    {
        //как?
    }
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.03.2014, 20:25     Непонятки с аргументами функции #5
Цитата Сообщение от Fraxinus Посмотреть сообщение
КАК в этой функции создать массив указателей на остальные функции?
Как в 3 посте не создаётся?
Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
24.03.2014, 20:36  [ТС]     Непонятки с аргументами функции #6
К сожалению нет...
Ведь мы внутри класса, по идее не должны создавать экземпляр?
alsav22
5416 / 4812 / 442
Регистрация: 04.06.2011
Сообщений: 13,587
24.03.2014, 20:48     Непонятки с аргументами функции #7
Цитата Сообщение от Fraxinus Посмотреть сообщение
К сожалению нет...
Пробовали?

Добавлено через 7 минут
Всё компилируется:
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
class MyStruct
{
public:
    struct Element
    {
        Element * next;
        Element * prev;
        string BookOrMagazine;
        string NameOfBook;
        string Year;
        string PublishingHouse;
        Element();
    };
    Element* begin;
    void ReadToEnd(MyStruct::Element **)
    {}
    void ReadToBegin(MyStruct::Element **)
    {}
    void DelEverySecond(MyStruct::Element **)
    {}
    void Push(MyStruct::Element **)
    {}
 
    typedef void (MyStruct::*p_method)(MyStruct::Element**);
    //функция, в которой надо реализовать массив указателей на остальные 4 функции
    void VoidArr()
    {
        p_method arr[4] = {&MyStruct::ReadToEnd, &MyStruct::ReadToBegin, &MyStruct::DelEverySecond, &MyStruct::Push};
    }
 
};
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
24.03.2014, 21:35     Непонятки с аргументами функции
Еще ссылки по теме:

Работа с аргументами - C++
Задание такое: Написать программу с использованием функции, которая сравнивает две строки, заданные в качестве её аргументов. Если аргумент...

Функция с аргументами - C++
Написать функцию с аргументами вещественный массив x размер массива n. Функция возвращает значение суммы элементов массива, начиная с...

Функция main с аргументами - C++
Приветствую, подскажите где именно указывать параметры аргументов(int argc, char **argv), если использовать следующий тип записи int...

Работа с аргументами консоли - C++
Привет. Подскажите на простом примере если я в консоли хочу например ввести команду "print 3". И чтобы после этого в консоли вывелось "3"....


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

Или воспользуйтесь поиском по форуму:
Fraxinus
23 / 23 / 1
Регистрация: 31.05.2011
Сообщений: 199
24.03.2014, 21:35  [ТС]     Непонятки с аргументами функции #8
alsav22, у кого-то руки кривые. Спасибо тебе, человек!
Yandex
Объявления
24.03.2014, 21:35     Непонятки с аргументами функции
Ответ Создать тему
Опции темы

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