【发布时间】:2019-03-14 12:20:39
【问题描述】:
更新我意识到这个问题缺少适当的 MCVE,我需要一些时间才能想出一个。当我有时间回到这个时,我会更新它,对不起。我很感激迄今为止的答案。
关注this answer regarding static functions:
声明(在MyClass)
void MyClass::func ( void (MyOtherClass::*f)(int) ); //Use of undeclared identifier 'MyOtherClass'
传递给 func 的函数示例:
void MyOtherClass::print ( int x ) {
printf("%d\n", x);
}
函数调用(在MyOtherClass)
void MyOtherClass::loop(){
func(&MyOtherClass::print);
}
如何将成员函数作为另一个类的成员函数的参数传递?
【问题讨论】:
-
使用
std::function作为参数和一个lambda绑定到MyOtherClass的实例。 -
您是否在问为什么会收到“使用未声明的标识符”错误?
-
不清楚问题出在哪里,但是关于方法指针的一些很好的通用阅读:isocpp.org/wiki/faq/pointers-to-members
-
@DrewDormann 基本上是的!这是一个语法问题。我正在尝试将成员函数作为另一个成员函数的参数传递,但是成员函数位于不同的命名空间中,因此无法遵循各种在线教程/说明中的语法。
-
不清楚,因为很难说出你想用它做什么。你做的大部分事情都是正确的。部分原因是我的错,我没有将屏幕滚动到足以看到评论中的错误消息。一旦我这样做了,很明显你的问题是
MyOtherClass在MyClass::func之前没有被声明。编译器还没有看到MyOtherClass并且不确定如何解释未知标识符。 minimal reproducible example 会让一切变得一清二楚。
标签: c++ function pointers syntax