ОПП, предварительное описание классов/функций. Как сделать? - страница 2

 
AlexSTAL:

Как предварительно описать класс или функцию?

Или другими словами как решить вот эту задачку:

class CClass1
  {
public:
   CClass2* Class2;
  };

class CClass2
  {
public:
   CClass1* Class1;
  };

Да на самом-то деле без форвардных описаний легко обойтись. Пример:

class CClass2proto
{
}

class CClass1
  {
public:
   CClass2proto* Class2;
  };

class CClass2 : public CClass2proto
  {
public:
   CClass1* Class1;
  };
 
MetaDriver:

Да на самом-то деле без форвардных описаний легко обойтись. Пример:

Это не по фен-шуй однако...
 
AlexSTAL:
Это не по фен-шуй однако...
:))
 
MetaDriver:

Да на самом-то деле без форвардных описаний легко обойтись.

Пример:

Пример не скомпилируется - CClass2* внутри CClass1 не определен

 
yu-sha:

Пример не скомпилируется - CClass2* внутри CClass1 не определен

Ахт, я там не туда постфикс навесил. Поправил. Исправленному истово верить.
 
MetaDriver:
Ахт, я там не туда постфикс навесил. Поправил. Исправленному истово верить.

Верю, если самоцель создать два пустых класса.

А как использовать методы Class2 из CClass1 не думал ? 

Попробуй написать что-нибудь нетестовое))) - прозреешь быстро.

Сделали forward declaration - вот и гуд 

 
yu-sha:

Попробуй написать что-нибудь нетестовое))) - прозреешь быстро.

Сделали forward declaration - вот и гуд 

Угу, как в моём случае... )))))))))))))


 
yu-sha:

Верю, если самоцель создать два пустых класса.

1. А как использовать методы Class2 из CClass1 не думал ? 

2. Попробуй написать что-нибудь нетестовое))) - прозреешь быстро.

3. Сделали forward declaration - вот и гуд 

1. Думал, конечно. Для этого на крайняк есть приведение типов. Которое не факт что понадобится.

Вполне возможно в большинстве случаев описать все нужные классу-1 в прото-классе-2. 

2. Пробовал.   Например https://www.mql5.com/ru/forum/2754/page1#comment_37517

3. Я и не возражаю ;)

Как сделать?
Как сделать?
  • www.mql5.com
Работа с графическими объектами.