Bonjour,

J'obtiens l'erreur de linkage suivant qui est en train de me rendre fou !! :

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'
La definition de ma classe est :
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 !