Прямая ссылка - это когда вы объявляете тип, но не определяете его.
Это позволяет вам использовать тип по указателю (или ссылку на C ++), но вы не можете объявить переменную.
Это способ сказать компилятору, что что-то существует
Скажите, что у вас есть структура Plop, определенная в Plop.h :
struct Plop
{
int n;
float f;
};
Теперь вы хотите добавить некоторые служебные функции, которые работают с этой структурой. Вы создаете другой файл PlopUtils.h (допустим, вы не можете изменить Plop.h):
struct Plop; // Instead of including Plop.h, just use a forward declaration to speed up compile time
void doSomething(Plop* plop);
void doNothing(Plop* plop);
Теперь, когда вы реализуете эту функцию, вам понадобится определение структуры, поэтому вам нужно включить файл Plop.h в ваш PlopUtils.cpp :
#include "PlopUtils.h"
#include "Plop.h" // now we need to include the header in order to work with the type
void doSomething(Plop* plop)
{
plop->n ...
}
void doNothing(Plop* plop);
{
plop->f ...
}