LINUX.ORG.RU

История изменений

Исправление quiet_readonly, (текущая версия) :

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

  • Убирается требование видеть определение другого класса: Basic.h включается только в Compile.cpp, а Compile.h только в Basic.cpp.
  • Даётся объявление класса вместо определения
    class Texture2D;
    
    class Sprite
    {
    // Здесь можно работать с указателями и ссылками на Texture2D.
    };
    
  • Из какого-то класса выделяется интерфейс и используется в другом класса, да и вообще паттерны помогают в таких ситуациях.

Исходная версия quiet_readonly, :

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

  • Убирается требование видеть определение другого класса: Basic.h включается только в Compile.cpp, а Compile.h только в Basic.cpp.
  • Даётся объявление класса вместо определения
    class Texture2D;
    
    class Sprite
    {
    // Здесь можно работать с указателями и ссылками на Texture2D.
    };
    
  • Из какого-то класса выделяется интерфейс и используется в другом класса, да и вообще паттерны помогают в таких ситуациях.