Bonjour,
J'obtiens l'erreur de linkage suivant qui est en train de me rendre fou !!:
La definition de ma classe est :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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'
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 !
Partager