【发布时间】:2018-09-01 18:03:34
【问题描述】:
我有一个简单的课程X
class X {
public:
template<typename T>
void doSomething(T &completion) {
std::cout << completion(10) << std::endl;
}
};
还有一个类A和B
class A {
public:
// some code
X* c;
};
class B : public A {
public:
int test(int x) {
return x * x;
}
void execute() {
auto lambda = [] (int x) { cout << x * 50 << endl; return x * 100; };
c->doSomething(lambda); // works
c->doSomething(&B::test); // does not work
}
};
我想将 B 类(或从 A 派生的任何其他类)的成员方法传递给 doSomething 方法,但它不起作用:/
【问题讨论】:
-
test不是函数。它是一个类方法。有很大的不同。模板尝试调用类方法,就好像它是一个函数一样。那是行不通的。您需要一个类实例来调用类方法。您打算调用其方法的类的实例在哪里? -
@JeJo 是的,我的错 ;) 已编辑