Использование метода в структуре - C (СИ)
Формулировка задачи:
Как вложить метод в структуру? Ну и вызвать его по том от туда?
Компилятор вот такое собирать отказался:
сказал:
'init' : function cannot be member of struct '<unnamed-tag>'
Помогите плис.
Листинг программы
- void init()
- {
- printf("I love C");
- }
- typedef struct
- {
- int a;
- void init();
- } LIKE_A_CLASS;
Решение задачи: «Использование метода в структуре»
textual
Листинг программы
- #include <stdio.h>
- typedef struct class_t {
- int a;
- int b;
- int (*getA)(const struct class_t*);
- int (*getB)(const struct class_t*);
- void (*setA)(struct class_t*, int);
- void (*setB)(struct class_t*, int);
- } TClass;
- int GetA(const TClass* st) {
- return st->a;
- }
- int GetB(const TClass* st) {
- return st->b;
- }
- void SetA(TClass* st, int value) {
- st->a = value;
- }
- void SetB(TClass* st, int value) {
- st->b = value;
- }
- int main() {
- TClass st = {0, 0, GetA, GetB, SetA, SetB};
- st.setA(&st, 10);
- st.setB(&st, 20);
- printf("a = %d\n", st.getA(&st));
- printf("b = %d\n", st.getB(&st));
- return 0;
- }
Объяснение кода листинга программы
- Объявление структуры
TClass
с полямиa
,b
, методамиgetA
,getB
,setA
,setB
. - Определение функций
GetA
иGetB
, которые возвращают значения полейa
иb
соответственно. - Определение функций
SetA
иSetB
, которые устанавливают значения полейa
иb
соответственно. - Создание объекта
st
типаTClass
в функцииmain
и инициализация его полей нулевыми значениями. - Установка значений полей
a
иb
объектаst
равными 10 и 20 соответственно. - Вызов функций
getA
иgetB
для объектаst
и вывод результатов на экран. - Возврат 0 из функции
main
, что означает успешный конец работы программы.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д