Использование метода в структуре - C (СИ)

Узнай цену своей работы

Формулировка задачи:

Как вложить метод в структуру? Ну и вызвать его по том от туда? Компилятор вот такое собирать отказался:
Листинг программы
  1. void init()
  2. {
  3. printf("I love C");
  4. }
  5. typedef struct
  6. {
  7. int a;
  8. void init();
  9. } LIKE_A_CLASS;
сказал: 'init' : function cannot be member of struct '<unnamed-tag>' Помогите плис.

Решение задачи: «Использование метода в структуре»

textual
Листинг программы
  1. #include <stdio.h>
  2.  
  3.  
  4. typedef struct class_t {
  5.     int a;
  6.     int b;
  7.     int (*getA)(const struct class_t*);
  8.     int (*getB)(const struct class_t*);
  9.     void (*setA)(struct class_t*, int);
  10.     void (*setB)(struct class_t*, int);
  11. }   TClass;
  12.  
  13. int GetA(const TClass* st) {
  14.     return st->a;
  15. }
  16.  
  17. int GetB(const TClass* st) {
  18.     return st->b;
  19. }
  20.  
  21. void SetA(TClass* st, int value) {
  22.     st->a = value;
  23. }
  24.  
  25. void SetB(TClass* st, int value) {
  26.     st->b = value;
  27. }
  28.  
  29. int main() {
  30.     TClass st = {0, 0, GetA, GetB, SetA, SetB};
  31.  
  32.     st.setA(&st, 10);
  33.     st.setB(&st, 20);
  34.  
  35.     printf("a = %d\n", st.getA(&st));
  36.     printf("b = %d\n", st.getB(&st));
  37.  
  38.     return 0;
  39. }

Объяснение кода листинга программы

  1. Объявление структуры TClass с полями a, b, методами getA, getB, setA, setB.
  2. Определение функций GetA и GetB, которые возвращают значения полей a и b соответственно.
  3. Определение функций SetA и SetB, которые устанавливают значения полей a и b соответственно.
  4. Создание объекта st типа TClass в функции main и инициализация его полей нулевыми значениями.
  5. Установка значений полей a и b объекта st равными 10 и 20 соответственно.
  6. Вызов функций getA и getB для объекта st и вывод результатов на экран.
  7. Возврат 0 из функции main, что означает успешный конец работы программы.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

14   голосов , оценка 3.857 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы