【问题标题】:Class Button needs Function Pointers类按钮需要函数指针
【发布时间】:2015-12-31 09:48:21
【问题描述】:

我有一个名为 Button 的类。它包含 4 个变量:x、y、width、height。在我的程序中,我有很多按钮,对于每个按钮,我需要一个不同的函数。类似于指向函数的指针向量。我不知道该怎么做。请指导我。

【问题讨论】:

  • 您需要的是一个事件系统。这在不同的 UI 框架中以不同的方式实现。你在写框架吗?
  • 不。我不知道那是什么。我使用 sfml 在我的屏幕上绘制东西。Button 类使用 sfml 在我的屏幕上绘制一个矩形。
  • 是的。对于每个按钮我需要不同的功能
  • 为什么不只拥有一个成员函数来满足您的需求?从“Button”继承,让成员函数处理它需要做的任何事情?

标签: c++ function class pointers


【解决方案1】:

我假设您是出于教育目的编写此代码。如果不是(=如果打算在某些生产系统中使用),那么我的建议是使用一些可以提供所有这些低级内容的框架(例如 Qt)。

我建议不要使用函数指针,这是一种“老派”技术,我建议在你的类中添加一个std::function,并使用你想要调用的函数进行初始化。

例如,像这样的:

class Button
{
   private:
      int x,y,width,height;
      std::function<void()> Callback;
   public:
      Button( std::function<void()> f ) : Callback(f) {}
};

【讨论】:

  • 是的,它用于教育目的。我的程序需要的是我不需要像这样声明 x 函数:void f1();无效 f2(); ...相反,我希望以某种方式将所有 f 函数存储在某种向量中并声明它们: void f[1]() ,void f[2]()....
  • 我编辑了答案,最好将回调存储在类中,而不必维护外部函数向量。虽然这也是可能的。
猜你喜欢
  • 2012-12-26
  • 1970-01-01
  • 2023-03-22
  • 2018-04-14
  • 1970-01-01
  • 1970-01-01
  • 2011-10-11
  • 2011-05-18
  • 1970-01-01
相关资源
最近更新 更多