Я уверен, что эта проблема часто задается, но я не могу найти что-то подходящее.У меня есть несколько исходных файлов в проекте C ++.Как правило, существует несколько заголовочных файлов с объявлениями классов и функций и связанных исходных файлов с их определениями.Проблема заключается в том, что когда я пытаюсь использовать один из моих классов, определенных в другом файле, в качестве члена для класса в другом файле, я получаю ошибки компиляции, даже когда используется директива #include
.Проблема решается путем прототипирования (это правильное слово?) Класса, прежде чем объявить его членом.Поэтому, если ClassA находится в одном файле, а ClassB - в другом, и я хочу использовать член ClassA в ClassB, я должен написать:
<code>
// ClassA.h
class ClassA {
public: ClassA (void); };<br>
// ClassB.h
class ClassA; // prototype
class ClassB {
public: ClassA* ca; };
Это нормально?Неважно, если я использую указатели или экземпляры, я все равно должен их прототипировать.Я обнаружил, что я также должен создавать прототипы структур и перечислений, если они находятся в отдельных файлах.Кажется, я не могу использовать константы, объявленные с использованием #define
или const
в нескольких файлах. Я получаю сообщения об ошибках, которые не определены, поэтому я не уверен, как дать им больше, чем область действия файла.То же самое касается typedefs
.Я уверен, что есть какое-то простое решение, которое я не помню ... любая помощь приветствуется!