我是一个尝试编写 Menu 类代码的新手,我希望它能够调用属于其他类的函数。在网上找了好久,找到的答案都不符合我的需要。
这是定义我的问题的一段简单的代码:
#include <iostream>
class Class1;//forward declaration
typedef void (Class1::*FunctionPtr_t)();//type: Pointer to a function in Class1 scope
class Class1
{
public:
void function1()
{std::cout << "function1 executed!";}//Test function to execute from Class2
};
class Class2
{
public:
FunctionPtr_t myfcnptr = NULL;//Pointer to a function in Class1
};
int main()
{
Class2 myclass2;
myclass2.myfcnptr = &Class1::function1;//Assign function to pointer (Everything OK here)
(myclass2.*myfcnptr)();//Compilation Error: 'myfcnptr' was not declared in this scope
}
我搞砸了,让两个类都成为 friend ,几乎在所有地方都使用了作用域运算符。我知道解决方案一定很简单,而且我犯了一个荒谬的错误,但我没有明白!感谢您的耐心等待;)
最佳答案
正确的语法是(myclass2.*myclass2.myfcnptr)();
.
但在你的情况下,Class1
和 Class2
无关,所以 Class2
无法明智地从 Class1
调用成员函数.您需要一个 Class1
的实例,或源自 Class1
的东西, 执行该调用。
关于c++ - c++中通过指针调用另一个类的类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37615309/