이것은 매우 기본적인 질문 일 가능성이 높습니다. 죄송합니다.서명이있는 인수에 대한 기본적인 질문 void * data
나는 C 엔진으로 구동되는 C++ 인터페이스를 작성했다. 는 C 엔진 기능 중 하나는 다음과 같은 특성을 갖는다 :
static int f(double t, double *y, double *ydot, void *data)
*data
꼬는 ODE 솔버에 사용자 데이터를 전달하는 것이다. 이제는 C에서 간단히 struct
을 만들고 내 데이터로 초기화 한 다음 전달합니다. C++에서는 사용자 데이터가 들어있는 클래스를 만들고 이전에 struct
을 전달한대로 전달하려고합니다. structs
은 classes
입니다. 나는 그것을 할 때
그러나, 다음과 같은 상황이 발생합니다
void *data
표기가 무엇을 의미 하는가 :int.cpp:25: error: no matching function for call to ‘UserData::UserData()’ int.cpp:13: note: candidates are: UserData::UserData(double) int.cpp:5: note: UserData::UserData(const UserData&) int.cpp:28: error: ‘void*’ is not a pointer-to-object type int.cpp:29: error: ‘void*’ is not a pointer-to-object type
내 질문은 다음과 같습니다?
- 내가 적절한 서명이있는 생성자가 없다는 불만이있는 이유는 무엇입니까?
분명히 나는 매우 신참이기 때문에 매우 유감 스럽지만 미안하지만 문제를 (Google 자체 검색 이외에) 어떤 문제를 Google에 사용할지 모르겠다.
감사합니다.
편집 : 이전 질문의 모호성에 대해 사과
. 또한, 나는 그 문제를 해결했고 그것은 매우 어리석은 실수였다.
나는 포함하는 클래스 매개 변수했다 :class Data{
// an interface to get parameters
};
을하고 내가 잘못이 한
static int f(double t, ...., void *user_data)
서명이있는 C 함수를 호출하는 데 필요한 :
static int f(double t, ...., void *user_data){
Data *data = (Data*) data; /* this is the stupid mistake */
}
을 때 나는 이 작업을 수행하기위한 것입니다 (현재 작동 함) :
static int f(double t, ...., void *user_data){
Data *data = (Data*) user_data; /* this is the correction */
}
감사합니다. void *data
의 정확한 의미를 알려 주시면 감사하겠습니다.
오류 메시지가 나타내는 코드를 게시해야합니다. –
"그것을 시도 할 때"우리에게 "그것이 무엇인지"를 말하지 않고 말하지 마십시오! –