Probleme de linkage d'un attribut (statique) pointeur sur fonction
Bonjour,
J'obtiens l'erreur de linkage suivant qui est en train de me rendre fou !! :arf: :
Code:
1 2 3 4 5 6
|
Building target: octaveTest
Invoking: GCC C++ Linker
g++ -L/usr/lib/octave-3.2.4/ -o"octaveTest" ./src/f.o ./src/octaveTest.o -loctave
./src/f.o: In function `F::B(ColumnVector (*)(double))':
/home/toto/workspace/octaveTest/Debug/../src/f.cpp:53: undefined reference to `F::_Bf' |
La definition de ma classe est :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
|
#ifndef F_H_
#define F_H_
#include <octave/oct.h>
class F {
public:
virtual ~F();
static ColumnVector RightHandVector(const ColumnVector & iY, double iT);
static void SetA(const Matrix & iA);
static void SetB(const ColumnVector & iB);
static void SetC(const ColumnVector & iC);
static ColumnVector B(double iT);
static void B( ColumnVector (*f)(double iT) );
private:
F();
static Matrix _A;
static ColumnVector _B; // Stand-alone time functions
static ColumnVector (*_Bf)(double iT);
static ColumnVector _C; // Constants
};
#endif /* F_H_ */ |
Dans le .cpp de l'implementation de la classe, j'ai :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
#include "f.h"
#include <math.h>
// Initialising the static attributes
Matrix F::_A;
ColumnVector F::_B;
ColumnVector F::_C;
ColumnVector (F::*_Bf)(double iT) = NULL;
.... BLA BLA ...
void F::B( ColumnVector (*f)(double iT) ) // Cela pretend etre une setter de _Bf
{
_Bf = f; // ICI UNE ERREUR DE LINKAGE
}
.... BLA BLA ...
ColumnVector F::RightHandVector(const ColumnVector & iY, double iT)
{
return(F::_A*iY + _Bf(iT) + F::_C); // ICI UNE ERREUR DE LINKAGE
} |
Pouvez-vous me donner un coup de main avec cela svp ? Qu'est ce que je fais mal ?
Je vous remercie d'avance !