C ++ новичок здесь.В настоящее время у меня есть два класса, которые зависят друг от друга.Класс A составляет член данных класса B, а класс B использует указатели на класс A.
// main.cpp
#include "A.hpp"
// A.hpp
#pragma once
#include "B.hpp"
class A {
private:
const B obj;
};
// B.hpp
#pragma once
#include "A.hpp"
// forward declaration
class A;
using T = A;
class B {
private:
T* t_obj;
};
Насколько я понимаю, препроцессор сначала введет A.hpp
, а затем сразу же введет B.hpp
.Он не сможет снова ввести A.hpp
из-за #pragma once
и возобновит работу с B.hpp
.Тогда он попадет в предварительное объявление, и поэтому class B
должно быть в порядке.Затем A.hpp
возобновится, и class A
должно быть в порядке.
Однако, ошибка компиляции, которую я получаю, выглядит примерно так:
./A.hpp:5: error: unknown type name 'B'
const B obj;
Любое понимание будет оценено.Спасибо.