1
함수 포인터가 클래스 멤버 인 함수 포인터로 함수를 호출하려고했습니다.Visual Studio의 비표준 구문; '&'를 사용하여 멤버에 대한 포인터를 만듭니다.
문제를 보여주기 위해 코드를 간단하게 만들었지 만 원래 코드의 foo()
함수는 이미 작성되어있어서 변경할 수 없습니다.
foo
는 GLFW (
glfwSetKeyCallback
에서이다)과
A
는 입력 핸들러 클래스입니다.)
코드는 다음과 같습니다
#include <iostream>
// this four line can not be changed
typedef void(*fptr)(int);
void foo(fptr f) {
f(0);
}
void testOutA(int i) {
}
class A {
public:
void testInA(int i) {
}
};
int main()
{
foo(testOutA); // works fine as it should be
A * a = new A();
foo(a->testInA); // ERROR
return 0;
}
컴파일 오류 메시지는 다음과 같습니다
ERROR: error C3867: 'A::testInA': non-standard syntax; use '&' to create a pointer to member
오류 메시지가 무엇입니까? –
오류와 마찬가지로 '&'를 사용하여 멤버에 대한 포인터를 만들려고 했습니까? – TartanLlama
잘 덧붙이 기 위해 노력했지만 지금까지 어디에 추가 할 지 모르겠다. 다음과 같은 것들을 tryed하지만 분명히 틀린 부분이있다 : & a -> testInA, -> & testInA, & (a-> testInA) – Sekkmer