Visual C++ необъявленный идентификатор

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 »: необъявленный идентификатор»

есть идеи?

Спасибо!


person yi cheng    schedule 21.05.2013    source источник


Ответы (1)


У вас циклическое включение. #pragma once предотвращает бесконечное включение, которое может произойти в результате этого, но это означает, что либо A не будет иметь над собой определение B, либо B не будет иметь над собой определение A, в зависимости от того, что когда-либо было скомпилировано первым.

Решение состоит в том, чтобы не #include заголовочные файлы, так как вам нужно только предварительное объявление для объявления указателя:

#pragma once

class B;

class A {
    B* aPtrToB;
};

а также:

#pragma once

class A;

class B {
    A* aPtrToA;
};
person Joseph Mansfield    schedule 21.05.2013