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

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

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

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

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

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;
}

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

  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
Похожие ответы