Форвард Объявить Подкласс

У меня есть базовый класс 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. Как бы я решил эту проблему?

Спасибо,
Эрик

1

Решение

Вы должны объявить A в заголовочном файле, например, A.h и включите этот файл в B.cpp и C.cpp, также если у вас есть некоторые inline функции в A (функции, которые определены в A декларация неявно inline) вы должны создать A.cpp, включить туда и A.h и определить эти функции в A.cpp

0

Другие решения

Создать файл 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 в главном файле

0

По вопросам рекламы [email protected]