Я ищу, чтобы переслать объявление структуры в заголовке, а затем скрыть реализацию в исходном файле.C++ Forward Объявить структуру в файле .h и определить структуру в файле .cpp
mystruct.h
...
struct MyStruct;
...
mystruct.cpp
#include <mystruct.h>
...
struct MyStruct : virtual SomeOtherStruct, virtual AndAnotherStruct {};
...
Однако, когда я пытаюсь создать экземпляр MyStruct:
main.cpp
#include <mystruct.h>
...
MyStruct structTest;
...
Я получаю ошибку
"error: aggregate 'MyStruct structTest' has incomplete type and cannot be defined"
Как я могу объявить структуру в заголовке, а затем определить ее позже в источнике? Важно, что MyStruct
наследуется от других структур. Я хотел бы скрыть как можно больше деталей реализации.
Вы не можете этого сделать. 'main.cpp' должен иметь доступ к определению структуры. Вы можете скрыть реализацию, используя идиом * pimpl *. – juanchopanza
Как компилятор мог узнать расположение объекта MyStruct в main.cpp? Помните, что только во время соединения разные единицы компиляции объединены, поэтому с точки зрения компилятора main.cpp полностью не связан с mystruct.cpp. – Roel