-- РЕДАКТИРОВАТЬ -- Извините, что я запутал людей, я просто быстро набрал этот код вместо копирования и вставки, поэтому я фактически делаю #ifndef A_H #define A_H в своем коде. Я изменил приведенный ниже код, чтобы показать, что
-- Завершить редактирование --
У меня есть два класса, каждый из которых содержит указатель на экземпляр другого класса, но это создает мне проблемы. Мой код похож на следующий
// A.h
#ifndef A_H
#define A_H
class B; // compiler error here
class A
{
B* foo;
// other members and functions
};
#endif
// A.cpp
#include "A.h"
#include "B.h"
/*
declare functions and use methods in both A and B
*/
// B.h
#ifndef B_H
#define B_H
class A;
class B
{
A** bar;
// other stuff
};
#endif
//B.cpp
#include "A.h"
#include "B.h"
/*
declare functions and use methods in both A and B
*/
Мне сказали, что будет работать предварительное объявление другого класса в заголовочном файле, а затем включение другого файла в файл cpp, но в отмеченной строке я получаю сообщение об ошибке, которое просто говорит: «упреждающее объявление« структуры b »».
Может ли кто-нибудь сказать мне, что я делаю неправильно?
#define blah \n class blah
будет заменен наclass [nothing here]
. - person Chris Eberle   schedule 09.09.2012#ifndef __FILENAME_H__
и т. д. - person   schedule 09.09.2012FILENAME_H
. - person chris   schedule 09.09.2012