我是函數指針的noob,這是我第一次使用它。函數指針 - 類內外
的代碼是:
#include "time.cpp"
int main(){
double** matrix= new double*[10];
for (int i=0; i<10; i++) matrix[i]=new double[10];
gear nit;
nit.roll(&matrix[0]);
}
time.cpp
double pulse_a (double t, double dt);
class gear{
void dynamics(double (*)(double, double), double** , double, double);
double pulse_b(double t, double dt);
public:
int net;
void roll(double** matrix);
};
void gear::roll(double** matrix){
double t,dt;
double (*pfunc)(double,double)=pulse_a; //or pulse_b
dynamics(pfunc,&matrix[0],t,dt);
}
void gear::dynamics(double (*pulse)(double , double), double** matrix, double t, double dt){
pulse(t,dt);
}
當我分配到pfunc pulse_a,我得到
error: argument of type ‘double (gear::)(double, double)’ does not match ‘double (*)(double, double)’
爲double (*pfunc)(double,double)=pulse_a;
當我assing p func到pulse_b,我得到undefined reference to chirp(double, double)'
對於double (*pfunc)(double,double)=pulse_b;
我在做什麼錯?
這是確切的錯誤: /tmp/ccy2DvIL.o:在函數'gear :: roll(double **)': /home/user/dir/time.cpp:13:未定義的引用'pulse_a(double,double)' collect2:ld返回1退出狀態 I' m使用,g ++版本4.5.1 20101208(SUSE Linux) –
感謝您解釋有關細節關於成員職能。它解決了這個問題。 –
沒關係。我剛剛宣佈了這個功能,沒有定義它。我的錯。 –