llvm — Чтение таблицы HDF5 при ошибке при компиляции структуры данных

Я пытаюсь читать из файла HDF5 в C ++. Попытка определить структуру данных для таблицы:

struct LandE{

enum {nFields = 7};

double Luminosity_nue;
double Luminosity_nuebar;
double Luminosity_nux;
double Mean_Energy_nue;
double Mean_Energy_nuebar;
double Mean_Energy_nux;
double Post_Bounce_Time;static const size_t( &getOffsets() )[nFields]{

const static size_t offsets[nFields] = {

HOFFSET(LandE, Luminosity_nue),
HOFFSET(LandE, Luminosity_nuebar),
HOFFSET(LandE, Luminosity_nux),
HOFFSET(LandE, Mean_Energy_nue),
HOFFSET(LandE, Mean_Energy_nuebar),
HOFFSET(LandE, Mean_Energy_nux),
HOFFSET(LandE, Post_Bounce_Time)

};

return(offsets);

}

static const size_t( &getSizes() )[nFields]{

const static size_t sizes[nFields] = {

sizeof(Luminosity_nue),
sizeof(Luminosity_nuebar),
sizeof(Luminosity_nux),
sizeof(Mean_Energy_nue),
sizeof(Mean_Energy_nuebar),
sizeof(Mean_Energy_nux),
sizeof(Post_Bounce_Time)

};

return(sizes);

}

static const char* getFields(){
return("Luminosity_nue,Luminosity_nuebar,Luminosity_nux,Mean_Energy_nue,Mean_Energy_nuebar,Mean_Energy_nux,Post_Bounce_Time");
}

};

Я получаю ошибку, что

invalid use of member 'Luminosity_nue' in static member function

для всех sizeof() команды.

Я не уверен, что не так, так как я видел подобный код компиляции.

Заранее большое спасибо.

Код, который компилируется:

struct LLHParamsRecord{
enum {nFields=(RecordBase::nFields+2)};

RecordBase base;
double logl;
int ndof;

static const size_t(&getOffsets())[nFields]{
const static size_t offsets[nFields] = {
HOFFSET(LLHParamsRecord, base.run),
HOFFSET(LLHParamsRecord, base.event),
HOFFSET(LLHParamsRecord, base.subEvent),
HOFFSET(LLHParamsRecord, base.subEventStream),
HOFFSET(LLHParamsRecord, base.exists),
HOFFSET(LLHParamsRecord, logl),
HOFFSET(LLHParamsRecord, ndof)
};
return(offsets);
}
static const size_t(&getSizes())[nFields]{
const static size_t sizes[nFields] = {
sizeof(RecordBase::run),
sizeof(RecordBase::event),
sizeof(RecordBase::subEvent),
sizeof(RecordBase::subEventStream),
sizeof(RecordBase::exists),
sizeof(logl),
sizeof(ndof)
};
return(sizes);
}

static const char* getFields(){
return("Run,Event,SubEvent,SubEventStream,exists,logl,ndof");
}
};

где RecordBase другая похожая структура.

0

Решение

Задача ещё не решена.

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

Других решений пока нет …

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