c++ - c++中通过指针调用另一个类的类函数

标签 c++ function-pointers

我是一个尝试编写 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)(); .

但在你的情况下,Class1Class2无关,所以 Class2无法明智地从 Class1 调用成员函数.您需要一个 Class1 的实例,或源自 Class1 的东西, 执行该调用。

关于c++ - c++中通过指针调用另一个类的类函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37615309/

相关文章:

c - 优化循环中的函数指针检查

c - 静态常量函数指针 C

c - 如何制作函数的多个副本并在 C 中异步调用它

c++ - 一般来说,处理虚假唤醒的正确方法是什么?

c++ - 不允许成员函数的非指针类型定义?

c++ - SWIG C++ 到 Python : Warning(362): operator= ignored

c++ - 从方法而不是自身调用内联 friend

c++ - 运算符作为函数指针

c++ - C++与Python切换控件的代价

c++ - C++ 中获取桌面分辨率的可移植方式