На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
Модераторы: Qraizer, Hsilgos
  
> Связывание классов
    Всем привет!

    Имеем два класса:

    class C1
    {
    public:
    ...
    Attach(C2* pC2)
    ...
    protected:
    C2* pC2;
    ...
    }

    class C2
    {
    public:
    ...
    Attach(C1* pC1)
    ...
    protected:
    C1* pC1;
    ...
    }

    В определенный момент их необходимо связать т.е присвоить соответствующие указатели друг другу, через метода Attach(...).
    Так вот хочется понять, кто это должен детать: C1, C2 или кто-то другой. Ведь в функциях Attach(...) могут быть и другие действия, кроме как простое присвоение указателя.
    Я понимаю, что это в первую очередь зависит от конкретной задачи и разработчика, но все же если есть какие-нибудь общие рекомендации на этот счет поделитесь, плиз. А то я этого нигде не встречал.

    И еще, если у кого есть ссылочки по данномй проблеме, дайте, если не сложно.
      Я бы предложил (во избежании рекурсии и усложнения кода), что бы это делал "кто-то другой".
        Например, сделать функцию
        bool Bind(C1 * c1, C2 * c2);
        Прописать ее как friend в обоих классах, и пусть себе связывает на здоровье одно с другим.
        Особенно если у тебя экземпляры этих классов всегда будут связаны взаимно - так этот факт будет нагляднее.
        Хотя, конечно, все зависит от задачи.
          Цитата reporter @ 14.01.04, 01:26
          Например, сделать функцию
          bool Bind(C1 * c1, C2 * c2);
          Прописать ее как friend в обоих классах, и пусть себе связывает на здоровье одно с другим.
          Особенно если у тебя экземпляры этих классов всегда будут связаны взаимно - так этот факт будет нагляднее.
          Хотя, конечно, все зависит от задачи.

          Я так понимаю данная функция (Bind(...)) будет всего лишь присваивать указатели. А если нужно чтобы при связывании происходили какие-то действия, например, создание резервных членов-данных для работы со связываемым классом. А при отвязывании, наоборот, удаление. Для такаго случая предложенная функция, IMHO, не подойдет.
            Если «какие-то действия, например, создание резервных членов-данных» будет нужно производить не только во время связывания классов, но и просто в ходе работы с ним, то, может имеет смысл вынести эти функции в отдельные методы класса? Тогда и Bind(...) могла бы их вызывать.
            Сочиняю на ходу, потому что информации о том, что же ты хочешь в итоге получить, маловато :)
              обсуждение чисто идеологическое ;)

              у тебя что то типа несвязанной сети имеется а потом некоторые узлы связываются ?
              В любом случае у тебя эти объекты в неком контейнере содержатся, этот контейнер и должен их связывать IMHO.
              0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
              0 пользователей:


              Рейтинг@Mail.ru
              [ Script execution time: 0,0280 ]   [ 16 queries used ]   [ Generated: 2.05.24, 07:38 GMT ]