У меня есть базовый класс A в заголовочном файле A.h
class A{};
в A.cpp у меня есть несколько подклассов:
class B: public A{};
class C: public A{};
Я хотел бы создать экземпляры типов B и C в отдельном файле, но не могу понять, как, если я не включу A.cpp в другие мои файлы. Если я перешлю декларацию B и C в A.h так:
class B;
class C;
Тогда инстанцирующий класс не знает его производного от A. Как бы я решил эту проблему?
Спасибо,
Эрик
Вы должны объявить A
в заголовочном файле, например, A.h и включите этот файл в B.cpp и C.cpp, также если у вас есть некоторые inline
функции в A
(функции, которые определены в A
декларация неявно inline
) вы должны создать A.cpp, включить туда и A.h и определить эти функции в A.cpp
Создать файл A.h
Создайте файл A.cpp и включите A.h (если требуется)
Создать файлы B.h и C.h
Включите A.h в обоих
Определите классы A, B, C в A.h, B.h, C.h соответственно
Написать функции-члены классов A, B и C в A.cpp, B.cpp и C.cpp соответственно
Создайте основной файл и включите B.h и C.h
Создавать объекты B и C в главном файле