LINUX.ORG.RU

Зависимости между элементами структуры


0

0

Народ, подскажите.

Как можно реализовать зависимость между элементами структуры.

Например: при изменение элемента структуры, выполняются функции для изменения других элементов структуры.

спасибо.

anonymous

Если язык поддерживает(c++, java,c#.....много, но я их не знаю =)..... ) - объявлять поля как private/protected.

Если нет - делать как в gtk - писать рядом с полем //private и просить всех использовать функции для изменения полей структуры.

YesSSS ★★★
()
Ответ на: комментарий от YesSSS

> Если язык поддерживает(c++, java,c#.....много, но я их не знаю =)..... ) - объявлять поля как private/protected.

судя по требованиям - это скорее автоматические триггеры, которых AFAIU нет ни в одном из перечисленных языков :) или же property как в Delphy что мне когда-то так нравились.

// wbr

klalafuda ★☆☆
()

> при изменение элемента структуры, выполняются функции для изменения других элементов структуры.

Для cl есть великолепная штуковина: cells (http://common-lisp.net/project/cells/)

Для си затрудняюсь ответить :)

swizard
()
Ответ на: комментарий от anonymous

Для C - никак, только слезно просить в доках/заголовочиках чтобы для изменения полей структуры использовались твои функции. Можно еще объявить поля как const, и в своих функциях преобразовывать указатель к неконст =), но это защита только от совсем дураков.

YesSSS ★★★
()

> Как можно реализовать зависимость между элементами структуры.

а вместо структру ты не можешь классы использовать ?

если да то перепиши все классами и напиши небольшой интерфейся для каждого класса, например:

class A {

private: int ax; int dx; public: A():ax(5):dx(6); void print() { printf(... ,a,b);} bool set_ax(int _ax) { dx = ax; ax = _ax; }

};

к примеру при изменения ax (set_ax) будет меняться и dx ..

anonymous
()

> Как можно реализовать зависимость между элементами структуры.

Ох уж этот tex

а вместо структру ты не можешь классы использовать ?

если да то перепиши все классами и напиши небольшой интерфейся для каждого класса, например:

class A {

private:

int ax;

int dx;

public:

A():ax(5):dx(6);

void print() { printf(... ,a,b);}

bool set_ax(int _ax) { dx = ax; ax = _ax; }

};

к примеру при изменения ax (set_ax) будет меняться и dx ..

anonymous
()
Ответ на: комментарий от anonymous

Спасибо за ответы. Немного конкретизирую.

Есть основная модульная система, имеющая главную структуру.
Допустим имеет она(структура) три элемента.
Стол
Ложка
Тарелка

За стол отвечает модуль Стол.so
За ложку отвечает модуль ложка.so
За тарелка отвечает модуль тарелка.so

Например: положение ложки зависит от тарелки и стола.

Т.е. для того чтобы взять ложку. Нужно проверить зависимости от стола и тарелки.

Пример: Положить ложку в красную тарелку находящуюся на деревеянном столе

Положить ложку в тарелку -> вызывается модуль создания красной тарелки -> поместить на деревянный стол-> вызывается модуль создания деревянного стола.

Мне нужна идея, как все это можно реализовать методами С

anonymous
()
Ответ на: комментарий от anonymous

в C проще сделай, во первых обяжи всех изменять поля структуры с помощью твоих ф-ций, для удобства сделай в этой структуре указатели на ф-ции которые это делают.

по другому никак.

alphex_kaanoken ★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.