Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/7: Рейтинг темы: голосов - 7, средняя оценка - 4.71
1 / 1 / 0
Регистрация: 25.02.2019
Сообщений: 26

Как передать метод в функцию?

23.03.2019, 01:01. Показов 1546. Ответов 12
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Я не понимаю ,как реализовать такую штуку. Нужно чтобы все члены класса оставались "private" и все данные о членах класса поступали только через методы. Но в функциях эта ерунда не работает.
в 21 строке выдаёт : "MyClass::Show": нестандартный синтаксис; используйте "&", чтобы создать указатель на член
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
40
41
42
43
44
45
// SandBox.cpp: определяет точку входа для консольного приложения.
//
 
#include "stdafx.h"
#include <iostream>
#include <string>
using namespace std;
 
class MyClass
{
private:
    int a;
    string name;
public:
    void CreateClass(int value_a, string value_name);
    void Show();
};
 
void Proverka(MyClass &Kokoko)
{
    cout << Kokoko.Show << endl;
}
 
int main()
{
    setlocale(LC_ALL, "ru");
    MyClass Probnik;
    Probnik.CreateClass(34, "Kokokoko");
    Probnik.Show();
 
    system("pause");
    return 0;
}
 
void MyClass::CreateClass(int value_a, string value_name)
{
    a = value_a;
    name = value_name;
}
 
void MyClass::Show()
{
    cout << "Число = " << a << endl;
    cout <<"Строка:"<< name << endl;
}
0
Лучшие ответы (1)
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
23.03.2019, 01:01
Ответы с готовыми решениями:

Передать метод, как параметр, в функцию
Добрый день. Есть функция, которая должна в качестве параметра принимать указатель на метод класса. Причем сам метод может быть обычным,...

Как передать указатель на функцию через метод класса ?
typedef void (*FuncCallback)(float* flValue); Пробовал по всякому и ни как: Class.CallFunc // error C3867: CClass::CallFunc :...

В функцию-метод передать указатель на другую функцию-метод и вызвать через переданный указатель
Друзья! Всем привет. Вот код: class otets { public: void f (void (otets::*p)()); private: void echo_f (){}; ...

12
Mental handicap
 Аватар для Azazel-San
1246 / 624 / 171
Регистрация: 24.11.2015
Сообщений: 2,429
23.03.2019, 01:04
Поменять с
Цитата Сообщение от Андрей Холодов Посмотреть сообщение
C++
1
Kokoko.Show
на
Цитата Сообщение от Андрей Холодов Посмотреть сообщение
C++
1
Kokoko.Show()
1
1 / 1 / 0
Регистрация: 25.02.2019
Сообщений: 26
23.03.2019, 01:22  [ТС]
Теперь на той же строчке вылазит
Ошибка (активно) E0349 отсутствует оператор "<<", соответствующий этим операндам
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
23.03.2019, 01:30
Цитата Сообщение от Андрей Холодов Посмотреть сообщение
Ошибка (активно) E0349 отсутствует оператор "<<", соответствующий этим операндам
Вывод в Proverka() убери (оставь только вызов, а зачем тебе тогда Proverka()?), и сделай вывод (что тебе там нужно выводить из класса) в реализации Show().
0
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,245
23.03.2019, 01:46
Лучший ответ Сообщение было отмечено Андрей Холодов как решение

Решение

Цитата Сообщение от Андрей Холодов Посмотреть сообщение
Ошибка (активно) E0349 отсутствует оператор "<<", соответствующий этим операндам
Ну дык метод Show() должен что-то возвращать для вывода-то. Т.е., быть функцией, а не процедурой (сорри за мой паскаль).
1
1 / 1 / 0
Регистрация: 25.02.2019
Сообщений: 26
23.03.2019, 01:48  [ТС]
Я просто для практики делаю что-то типа рпг игрушки и у меня возникла такая проблема. Код упростил для понимания. Там во время битвы нужно банально вывести имя противника. Но битва происходит в функции(в конкретном случае в функции "Proverka") и поэтому и имя нужно выводить в функции.
Я слышал, что переменные нельзя якобы ставить в "public", чтобы ими никто не воспользовался, но как реализовать это иначе я хз.
0
nd2
3438 / 2817 / 1249
Регистрация: 29.01.2016
Сообщений: 9,427
23.03.2019, 02:00
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
class MyClass
{
private:
    int a;
    string name;
public:
    void CreateClass(int value_a, string value_name);
    void Show()
    {
        cout << name << endl;
    }
};
 
void Proverka(MyClass &Kokoko)
{
    Kokoko.Show();
}
0
1 / 1 / 0
Регистрация: 25.02.2019
Сообщений: 26
23.03.2019, 02:02  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Ну дык метод Show() должен что-то возвращать для вывода-то. Т.е., быть функцией, а не процедурой (сорри за мой паскаль)
Премного благодарю, всё заработало. Чтобы я без вас всех делал))
0
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,245
23.03.2019, 02:06
Цитата Сообщение от Андрей Холодов Посмотреть сообщение
Премного благодарю, всё заработало. Чтобы я без вас всех делал))
Книжку открой и почитай про свойства, геттеры и сеттеры. Сделай это без нас.
0
1 / 1 / 0
Регистрация: 25.02.2019
Сообщений: 26
23.03.2019, 02:36  [ТС]
Ответь мне пожалуйста в таком случае, зачем ты вообще сидишь на этом форуме, раз народ должен что-либо делать без " вас "? Я не со злостью говорю, но тем не менее. Не нравится помогать - не помогай. Чего воздух сотрясать в пустую?)
1
23.03.2019, 10:21

Не по теме:

Цитата Сообщение от Андрей Холодов Посмотреть сообщение
ачем ты вообще сидишь на этом форуме, раз народ должен
Народ мне ничего не должен.
Цитата Сообщение от Андрей Холодов Посмотреть сообщение
Не нравится помогать - не помогай.
Я думал, что ты научиться хочешь, поэтому посоветовал, про что почитать, чтобы стать умнее.
Больше не буду.

0
1 / 1 / 0
Регистрация: 25.02.2019
Сообщений: 26
23.03.2019, 16:05  [ТС]
Цитата Сообщение от Verevkin Посмотреть сообщение
Я думал, что ты научиться хочешь, поэтому посоветовал, про что почитать, чтобы стать умнее.
Прошу прощения если я неправильно вас понял.
Цитата Сообщение от Verevkin Посмотреть сообщение
Сделай это без нас.
Просто это прозвучало с язвительными нотками.
0
Злостный нарушитель
 Аватар для Verevkin
10233 / 5662 / 1260
Регистрация: 12.03.2015
Сообщений: 26,245
23.03.2019, 16:12
Цитата Сообщение от Андрей Холодов Посмотреть сообщение
Прошу прощения если я неправильно вас понял.
Я тебя прощаю.

Не по теме:

Цитата Сообщение от Андрей Холодов Посмотреть сообщение
Просто это прозвучало с язвительными нотками.
Это не звучало. Это - текст.

0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
23.03.2019, 16:12
Помогаю со студенческими работами здесь

Не могу разобраться как передать корректно передать массив из функции в функцию
//--------------------------------------------------------------------------- #pragma hdrstop ...

Как передать метод класса во внешнюю функцию?
Необходимо чтобы пользователь выбрал метод класса и передал его в качестве аргумента функции

Как в метод/функцию передать имя объекта над которым будет происходить воздействие?
Как в метод/функцию передать имя объекта над которым будет происходить воздействие? У меня есть функция которой я хочу передать label...

Передать функцию в метод
Добрый день. Есть классы: class MainClass { private final SecondClass secondClass; public MainClass(SecondClass...

Передать в метод функцию, выбранную с помощью RadioButton
Добрый день Подскажите пожалуйста у меня на форме есть радиобаттоны, с помощью которых пользователь выбирает функцию эту функцию мне...


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

Или воспользуйтесь поиском по форуму:
13
Ответ Создать тему
Новые блоги и статьи
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Access
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
Поиск "дружественных имён" СОМ портов
Argus19 22.11.2025
Поиск "дружественных имён" СОМ портов На странице: https:/ / norseev. ru/ 2018/ 01/ 04/ comportlist_windows/ нашёл схожую тему. Там приведён код на С++, который показывает только имена СОМ портов, типа,. . .
Сколько Государство потратило денег на меня, обеспечивая инсулином.
Programma_Boinc 20.11.2025
Сколько Государство потратило денег на меня, обеспечивая инсулином. Вот решила сделать интересный приблизительный подсчет, сколько государство потратило на меня денег на покупку инсулинов. . . .
Ломающие изменения в C#.NStar Alpha
Etyuhibosecyu 20.11.2025
Уже можно не только тестировать, но и пользоваться C#. NStar - писать оконные приложения, содержащие надписи, кнопки, текстовые поля и даже изображения, например, моя игра "Три в ряд" написана на этом. . .
Мысли в слух
kumehtar 18.11.2025
Кстати, совсем недавно имел разговор на тему медитаций с людьми. И обнаружил, что они вообще не понимают что такое медитация и зачем она нужна. Самые базовые вещи. Для них это - когда просто люди. . .
Создание Single Page Application на фреймах
krapotkin 16.11.2025
Статья исключительно для начинающих. Подходы оригинальностью не блещут. В век Веб все очень привыкли к дизайну Single-Page-Application . Быстренько разберем подход "на фреймах". Мы делаем одну. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru