【发布时间】:2017-03-02 14:03:04
【问题描述】:
我试图用函数指针调用一个函数,其中函数指针是类成员。
我简化了代码以仅展示问题,但原始代码中的 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;
}
编译错误信息为:
错误:错误 C3867:'A::testInA':非标准语法;使用 '&' 创建指向成员的指针
【问题讨论】:
-
错误信息是什么?
-
您是否尝试使用
&创建指向成员的指针,如错误所示? -
好吧,我尝试添加 & 但我不知道在哪里添加它到目前为止我尝试了以下这些,但这些显然是错误的:&a->testInA, a->&testInA, &(a ->testInA)
-
这样不行。你有什么版本的 C++ 可用?
标签: c++ visual-studio function class pointers