포인터를 함수로 사용할 수있는 멍청한데, 처음으로 사용하고 있습니다.함수 포인터 - 클래스 내부 및 외부
코드는 다음과 같습니다
#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 내가 pulse_a에 pfunc를 할당 할 때 내가 assing 때
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);
}
, 나는 double (*pfunc)(double,double)=pulse_a;
에 대한
error: argument of type ‘double (gear::)(double, double)’ does not match ‘double (*)(double, double)’
를 얻을 수 피 func에서 pulse_b로, undefined reference to chirp(double, double)'
double (*pfunc)(double,double)=pulse_b;
무엇이 잘못 되었나요?
를이 정확한 오류입니다 : /tmp/ccy2DvIL.o :에서 'pulse_a (double, double)'에 대한 정의되지 않은 참조 collect2 : ld가 1을 반환했습니다. 종료 상태 I ' m 사용, g ++ 버전 4.5.1 20101208 (수세 리눅스) –
세부 사항에 대해 설명해 주셔서 감사합니다. 멤버 함수들에 대해서. 그것은 그 일을 해결합니다. –
괜찮습니다. 나는 방금 정의하지 않은 함수를 선언했다. 내 잘못이야. –