Исходный файл, в котором вы используете atom
, нуждается в полном определении структуры carbon
.
Поместите структуру вместе с внешним в тот же файл заголовка, например:
struct carbon {
double temp;
double mass;
rowvec::fixed<3> position;
rowvec::fixed<3> velocity;
rowvec::fixed<3> force;
};
extern struct carbon *atom;
Определение переменной atom
в одном из ваших исходных файлов:
struct carbon *atom = 0;
Теперь, когда вам нужно получить доступ к atom
, включите файл заголовка, где структура и объявление extern, и это должно работать.
PS.Вместо наличия переменной atom
в глобальном пространстве имен вы можете поместить ее в собственное пространство имен:
namespace some_clever_name
{
struct carbon { ... };
extern carbon *atom;
}
и поместить в исходный файл:
some_clever_name::carbon *some_clever_name::atom = 0;