#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 буде визначено пізніше.