/ / c ++, декларуючи клас в іншому файлі заголовка класу - c ++, файли заголовків

c ++, який оголошує клас у файлі заголовка іншого класу - c ++, заголовки-файли

#ifndef PC
#define PC
#include <iostream>
#include <string>
#include "../include/worm.h"
#include "../include/dns.h"

class DNS; // Forward decleration

class PC
{
....(there is all the declration here)
};

#endif

чому існує "клас DNS;" яка мета цього написати? (якщо вам потрібно більше коду, щоб зрозуміти необхідність, дайте мені знати)

Відповіді:

4 для відповіді № 1

Нам знадобиться більше коду, зокрема DNS "sфайл заголовка, але я припускаю, що dns.h також включає pc.h. Коли у вас є два файли заголовків, які включають один одного, вони повинні переслати вперед інший клас.

Однак, якщо dns.h не містить pc.h, тоді вам не потрібно переадресація.

Моє розуміння цього передбачає круговізалежності. Уявіть, що я проходжу через dns.h, і я бачу pc.h. Мені потрібно знати, від чого ти залежиш, тому зараз я починаю переглядати pc.h. Зараз я бачу dns.h, але я був просто там, тому я продовжуйте рухатись через pc.h. Якщо ви використовуєте DNS всередині класу ПК, як я можу знати, що таке DNS? Я перестала ходити через dns.h, перш ніж потрапити на цю заяву класу.

Рішення полягає в тому, щоб вперед оголосити клас вп.ч. Це дає мені достатньо інформації, щоб знати, що DNS - це якийсь клас, і не вигадувати, коли я бачу аргументи, змінні тощо типу DNS. Тепер я впевнений, що DNS буде визначено пізніше.