in A.h
#pragma once
include "B.h"
class A {
B* aPtrToB;
}
in B.h
#pragma once
include "A.h"
class B{
A* aPtrToA;
}
Visual С++ говорит: «Ошибка C2065:« A »: необъявленный идентификатор»
есть идеи?
Спасибо!
in A.h
#pragma once
include "B.h"
class A {
B* aPtrToB;
}
in B.h
#pragma once
include "A.h"
class B{
A* aPtrToA;
}
Visual С++ говорит: «Ошибка C2065:« A »: необъявленный идентификатор»
есть идеи?
Спасибо!
У вас циклическое включение. #pragma once
предотвращает бесконечное включение, которое может произойти в результате этого, но это означает, что либо A
не будет иметь над собой определение B
, либо B
не будет иметь над собой определение A
, в зависимости от того, что когда-либо было скомпилировано первым.
Решение состоит в том, чтобы не #include
заголовочные файлы, так как вам нужно только предварительное объявление для объявления указателя:
#pragma once
class B;
class A {
B* aPtrToB;
};
а также:
#pragma once
class A;
class B {
A* aPtrToA;
};