Страницы

Поиск по вопросам

среда, 29 января 2020 г.

Можно ли в структуру вставить ф-цию?

#c


Например:

struct st {
    int n = 0;
    int m = 0;
    int summa (int i, int j) {
        return n + m;
    }
}


код, конечно не работает, но можно ли сделать что-то подобное в Си? 
    


Ответы

Ответ 1



В таком виде — нет, это вам не C++. Но ничто не мешает передавать this явно. К слову, пространств имён тут тоже нет, так что функцию придётся вытащить за пределы структуры. И вообще, Си — это язык низкого уровня, без прикрас и синтаксического сахара. Так что извольте раскладывать всю программу по полочкам. struct st { int n; int m; }; void st_constructor(struct st* this) { this->n = 0; this->m = 0; } int st_summa(const struct st* this) { return this->n + this->m; }

Ответ 2



Нет, в си у структур не может быть функций-членов. Конечно, там могут быть указатели на функции, но это совсем не то, поскольку занимает место в каждом экземпляре структуры и при вызове не получает неявный this.

Комментариев нет:

Отправить комментарий