Перекрестные ссылки включали заголовки в программу C++

Я не попробовал это сам, но пытаюсь установить:

height : 36px; //for other browsers
line-height: 36px; // for IE

, Где 36 пкс высота Вашего входа.

21
задан banDedo 15 September 2009 в 20:04
поделиться

4 ответа

Проблема в том, что размер Class1 зависит от Class2, и наоборот. Следовательно, нет возможности рассчитать размер ни для одного из них. Вперед объявите один из классов и измените один из атрибутов на указатель или ссылку:

#ifndef HEADER2_H
#define HEADER2_H

class Class1;
class Class2
{
 Class1 *class1Instance;
 // or
 Class1 &class1Instance;
};

#endif
33
ответ дан 29 November 2019 в 20:13
поделиться

Вы не можете, чтобы Class2 содержал экземпляр Class1 И если Class1 содержал экземпляр Class2. Что вы можете сделать, так это сделать так, чтобы каждый класс содержал ссылку или указатель на другой тип класса (с соответствующими прямыми ссылками). т.е.


class Class2;
class Class1
{
    Class2& class2Instance;
};

class Class1;

class Class2
{
    Class1& class1Instance;
};
2
ответ дан 29 November 2019 в 20:13
поделиться

У вас есть классическая циклическая ссылка. Это уже обсуждалось здесь, в Stack Overflow. Просто примените принятый ответ к этому потоку, заменив «структура» на «класс», и вы в золотом цвете.

Отредактировано для ясности

1
ответ дан 29 November 2019 в 20:13
поделиться

Две структуры бесконечно рекурсивно рекурсируют друг с другом - чтобы знать размер Class1 , вам необходимо знать размер Class2 , который требует размера of Class1 и т. д. Для этого можно использовать указатель хотя бы в одном из случаев:

#ifndef HEADER1_H
#define HEADER1_H

class Class2; // no need to include Header2

class Class1
{
    Class2* class2Instance;
}

#endif
3
ответ дан 29 November 2019 в 20:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: