У меня есть следующая функция-член:
void GClass::InitFunctions()
{ // Initialize arrays of pointers to functions.
ComputeIntLen[0] = &ComputeILS;
ComputeIntLen[1] = &ComputeILE;
ComputeIntLen[2] = &ComputeILI;
PostStep[0] = &PSS;
PostStep[1] = &PSE;
PostStep[2] = Ψ
gRotation = new Rotation();
}
Очевидно, GClass содержит все соответствующие члены:
void ComputeILE(Int_t, Int_t *, Double_t *);
void ComputeILI(Int_t, Int_t *, Double_t *);
void PSS(Int_t , Int_t *, Int_t &, Int_t*);
void PSE(Int_t, Int_t *, Int_t &, Int_t*);
void PSI(Int_t , Int_t *, Int_t &, Int_t*);
ComputeIntLenFunc ComputeIntLen[gNproc];
PostStepFunc PostStep[gNproc];
... //other members
}
, где gNproc - глобальное const int, а ComputeIntLenFunc и PostStepFunc -typedefs вроде этого:
typedef void (*ComputeIntLenFunc)(Int_t ntracks, Int_t *trackin, Double_t *lengths);
typedef void (*PostStepFunc)(Int_t ntracks, Int_t *trackin, Int_t &nout, Int_t* trackout);
Когда я компилирую это, я получаю gcc выдает ошибку: «ISO C ++ запрещает брать адрес неквалифицированной или заключенной в скобки нестатической функции-члена для формирования указателя на функцию-член. Скажем'& GClass :: ComputeIntLenScattering' "
Когда я заменяю FunctionNames на GClass :: FunctionNames в InitFunctions (), я получаю" не могу преобразовать "void (GClass :: *) (Int_t, Int_t *, Double_t *) 'в'void (*) (Int_t, Int_t *, Double_t *)' в задании "
Пожалуйста, помогите мне.Что это за тема C ++?