Как вызвать функцию из другого класса в c
как мне из одного класса вызвать функцию с параметрами, объявленную в другом классе?
class CKlassA : public VS_FIXEDFILEINFO < protected: struct LANGANDCODEPAGE < WORD wLanguage; // language WORD wCodePage; // code page >; public: . . bool FunctionA(OUT LPTSTR lpszParam, IN DWORD dwSize) < return GetValue(_T("ABC"), lpszParam, dwSize); > protected: BYTE* m_pInfo; LANGANDCODEPAGE m_Translate; >;
как мне из класса CKlassB вызвать FunctionA с параметрами
Исправлена подсветка синтаксиса. — ПК.
Re: Вызов функций из другого класса
| От: | Vamp |
| Дата: | 10.09.03 07:52 |
| Оценка: |
А>как мне из класса CKlassB вызвать FunctionA с параметрами
Включить объявление этого класса и создаеть его объект.
Да здравствует мыло душистое и веревка пушистая.
Re[2]: Вызов функций из другого класса
| От: | Аноним |
| Дата: | 10.09.03 07:54 |
| Оценка: |
Здравствуйте, Vamp, Вы писали:
А>>как мне из класса CKlassB вызвать FunctionA с параметрами
V>Включить объявление этого класса и создаеть его объект.
а как это сделать?
(напишите пример для моего случая плиз)
Re[3]: Вызов функций из другого класса
| От: | LaptevVV |
| Дата: | 10.09.03 08:04 |
| Оценка: |
Здравствуйте, Аноним, Вы писали:
А>>>как мне из класса CKlassB вызвать FunctionA с параметрами
V>>Включить объявление этого класса и создаеть его объект.
А>а как это сделать?
А>(напишите пример для моего случая плиз)
В классе В
CKlass A;
A.FunctionA(параметры);
Хочешь быть счастливым — будь им!
Без булдырабыз.
Re[3]: Вызов функций из другого класса
| От: | GarryIV | |
| Дата: | 10.09.03 08:05 | |
| Оценка: | +1 -1 | |
Здравствуйте, Аноним! Вы писали:
А>>> как мне из класса CKlassB вызвать FunctionA с параметрами
V>> Включить объявление этого класса и создаеть его объект.
> а как это сделать?
> (напишите пример для моего случая плиз)
ИМХО Вам стоит сначала прочитать про ООП для начала, по крайней мере то что касается инкапсуляции. А то желание из одного класса звать функцию-член другого класса вызывает недоумение.
Posted via RSDN NNTP Server 1.7 beta
WBR, Igor Evgrafov
Re[4]: Вызов функций из другого класса
| От: | Аноним |
| Дата: | 10.09.03 08:09 |
| Оценка: |
Здравствуйте, GarryIV, Вы писали:
GIV>Здравствуйте, Аноним! Вы писали:
А>>>> как мне из класса CKlassB вызвать FunctionA с параметрами
V>>> Включить объявление этого класса и создаеть его объект.
>> а как это сделать?
>> (напишите пример для моего случая плиз)
GIV>ИМХО Вам стоит сначала прочитать про ООП для начала, по крайней мере то что касается инкапсуляции. А то желание из одного класса звать функцию-член другого класса вызывает недоумение.
возможно .
но я и сам давно разобрался!
Как вызвать функцию из другого класса в c
Пользователь
Регистрация: 28.03.2011
Сообщений: 32
Как вызвать функцию из класса ?
Есть класс, а в нем функция
class test < public: int sh(); >; sh()
А как теперь его вызвать ?
test::sh();
не прокатывает, вылазит ошибка
| Use . or -> to call ‘test::sh() |
, однако при попытке test.sh(); или test->sh(); тоже не компилируется
| Silly Student |
| Посмотреть профиль |
| Найти ещё сообщения от Silly Student |
Форумчанин
Регистрация: 07.08.2011
Сообщений: 576
вот так попробуй
int test::ch() < //тут тело метода >
Пользователь
Регистрация: 25.05.2011
Сообщений: 89
class test < public: int sh(); >; int test::sh() < ShowMessage("sh"); return 0; >void main()
Последний раз редактировалось _Alerter_; 13.10.2011 в 20:09 .
| Похожие темы | ||||
| Тема | Автор | Раздел | Ответов | Последнее сообщение |
| Как вызвать функцию из функции ? | PheonixS | JavaScript, Ajax | 3 | 16.12.2010 05:35 |
| Как вызвать функцию из юнита? | Des | Общие вопросы Delphi | 5 | 06.11.2010 12:47 |
| Вызвать функцию с известной сигнатурой для неизвестного класса. Интерфейс | Ferrum26 | Общие вопросы Delphi | 4 | 22.07.2010 14:26 |
| Как вызвать метод из другого класса в C# | KobolD | Помощь студентам | 6 | 25.06.2010 14:12 |
| Как вызвать функцию? | blackstersl | Общие вопросы Delphi | 10 | 07.06.2009 19:22 |
Вызов функции одного класса внутри функции другого класса
Как передать функцию, возвращающую некоторую величину из одного класса в качестве переменной в функции, определенной в другом классе. На данный момент мой код выглядит примерно так:
float A::decay()< B b; float N; const int HL=946; const int G=126; float T; if(b.min()>0) < T=(float)(b.min()-G)/HL; N=pow(2,-T); >return N; > int B::min() < int min=dtim[0][0][0]; for(int i=0;i> > return min; >
При попытке вызова функции min() в decay(), min всегда равен нулю.
Отслеживать
13.7k 12 12 золотых знаков 43 43 серебряных знака 75 75 бронзовых знаков
задан 14 июл 2016 в 11:56
11 1 1 серебряный знак 2 2 бронзовых знака
вам известно что такое указатель на функию ?
14 июл 2016 в 12:08
@ampawd не отказался бы от объяснения на примере данного кода
14 июл 2016 в 12:15
2 ответа 2
Сортировка: Сброс на вариант по умолчанию
По указателю, очевидно.
Но проще передать указатель на класс, и уже оттуда вызвать нужный метод.
float A::decay(B * b)< // B b; - это больше не нужно . здесь без изменений if (b->min()>0)< .
Отслеживать
ответ дан 14 июл 2016 в 12:13
Alexey Esaulenko Alexey Esaulenko
323 1 1 серебряный знак 13 13 бронзовых знаков
У вас проблема скорее в вычислении min , а не в передаче функции. Вернее, не в передаче, а вызове. Вы не делаете ничего сверхъестественного. Код ниже - упрощенная версия вашего. Но что такое у вас dtim , какие там значения и т.д. и т.п. - этого же мы не знаем! Потом, у вас в decay создается объект B конструктором по умолчанию - так и надо? Может, в этом b все элементы dtim - нулевые?
Другое дело, если вам действительно надо передать функцию-член одного класса в другую.
Отслеживать
ответ дан 14 июл 2016 в 12:12
219k 15 15 золотых знаков 119 119 серебряных знаков 230 230 бронзовых знаков
второй вариант, вычисляемые значения min верны, при вызове печати из класса B
14 июл 2016 в 12:14
@robado Знаете, приведите все же какой-то минимальный самодостаточный пример - ru.stackoverflow.com/help/mcve
Как правильно вызвать функцию другого класса?

Очень не советую использовать callback-и (да и большую часть других плюшек С++ последних стандартов) раньше, чем научитесь обходиться без них. Передавайте объекты, используйте более традиционные методы. Когда сможете написать все без callback-ов и потратите на отладку этого кода меньше, чем на написание - тогда можно смело с ними знакомиться и использовать. Начнете с них - превратите свой код в минное поле и не сможете понять, где рвануло и почему.
Решения вопроса 2

Это называется функция обратного вызова, или Сallback
Существует достаточно много способов для реализации коллбеков, но самым современным решением в C++ является функтор.
Функтор, или функциональный объект - это просто класс с перезагруженным оператором () . Стандартная библиотека уже включает в себя интерфейс для удобного создания и использования функторов - std::function
#include void deleteAllItems(int); // foo; //
Ответ написан более трёх лет назад
Нравится 2 2 комментария
Евгений Шатунов @MarkusD Куратор тега C++
Pavel Tananykhin , это ответ на твой вопрос. 🙂
Так же советую использовать библиотеку libsigc++, которая по своей сути является отщеплением и развитием Boost signals. Она простая в освоении, удобная в использовании и быстрая в работе.
libsigc.sourceforge.net/index.shtml
https://developer.gnome.org/libsigc++-tutorial/stable/
Евгений Шатунов @MarkusD Куратор тега C++
А. кстати. Еще неплохо будет добавить пример использования функторов для вызова this-call функций.
Пример использования.
cpp.sh/2fuxm
"I'm here to consult you" © Dogbert
В другом классе я создаю указатель для этой функции.
void(InventoryContainer::*fnDelete)(unsigned int);
Но при попытке вызвать эту функцию,
this->fnDelete(this->IFrom);
студия показывает мне что this в данном случае не корректен.
1. Как правильно вызвать функцию?
Правильно показывает. fnDelete должен быть вызван для объекта класса InventoryContainer, и синтаксис разыменования указателя на функцию-член малость другой:
InventoryContainer *that; . (that->*fnDelete)(IFrom);
2. Где то на StackOverflow видел,что для вызова такой функции нужен ещё объект.Не лучше ли тогда просто передать ссылку на объект и через него и вызвать функцию?
Смысл указателя на функцию-член в том, что он даёт возможность вызывать любую функцию с такой сигнатурой в данном объекте. Т.е. для динамического выбора:
class A < public: void f1(); void f2(); >; void (A::*f)(); if (. ) f = &A::f1; else f = &A::f2; . A *pa; . (pa->*f)(); // вызывает f1 или f2