声明并使用指向另一个类中成员函数的指针

马克西姆·利蒙(Maxime Limone)

当我尝试使用指向不同类的成员函数的指针时,出现了此错误。

错误:sources / common / OurMenu.cpp:
  在成员函数“ void OurMenu :: menuNavigation()”中:sources / common / OurMenu.cpp:336:36:错误:必须使用“。*”或“-> *”在
  '(((OurMenu *)this)-> OurMenu :: _ buttons.std :: vector :: at>((((std :: vector :: size_type)((OurMenu *)this)- > OurMenu :: _ actualLine))-> Button :: doIt(...)',例如'(...-> *((OurMenu *)this)-> OurMenu :: _ buttons.std :: vector :: at >((((std :: vector :: size_type)((OurMenu *)this)-> OurMenu :: _ actualLine))-> Button :: doIt)(...)' 
     _buttons.at(_actualLine)-> doIt( );

那是我的代码:

OurMenu.hh

class                           OurMenu
{
 private:
  GraphicLib                    *_window;
  OurGame                       *_game;
  gdl::Geometry                 _background;
  std::vector<gdl::Texture*>    _textures;
  std::vector<Button*>          _buttons;
  int                           _actualLine;
  int                           _time;

public:
  [...]
  void                          menuNavigation();
  void                          gameSetting();
};

Button.hh

class                   Button
{
 private:
  Bloc                  *_select;
  Bloc                  *_notSelect;

 public:
  Button(const float &x, const float &y, gdl::Geometry *back,
     gdl::Texture *tx, gdl::Texture *txS, glm::vec3 const &scale, void (OurMenu::*ptr)());
  ~Button();

  void                  (OurMenu::*doIt)();
  void                  isSelect();
  void                  isDeselect();
  Bloc                  *getSelect() const;
  Bloc                  *getNotSelect() const;
};

按钮声明

 Button  *solo = new Button(2, 7, &_background, _textures.at(1), _textures.at(7), 
                           glm::vec3(0.0025, 0.0022, 0), &OurMenu::gameSetting);

函数调用

solo->doIt();

Button.cpp

Button::Button(const float &x, const float &y, gdl::Geometry *back, 
              gdl::Texture *tx, gdl::Texture *txS, glm::vec3 const &scale, void (OurMenu::*ptr)())
{
  _select = new Bloc(0, 0, back, txS);
  _select->rotate(glm::vec3(1, 1, 0), 180);
  _select->setScale(scale);
  _select->setX(x);
  _select->setY(y);
  _select->setZ(1);

  _notSelect = new Bloc(0, 0, back, tx);
  _notSelect->rotate(glm::vec3(1, 1, 0), 180);
  _notSelect->setScale(scale);
  _notSelect->setX(x);
  _notSelect->setY(y);
  _notSelect->setZ(-1);
  doIt = ptr;
}
虚拟软件公司

就您而言,您似乎在尝试

(solo->doIt)(); // need the parentheses here

wheresolo是type Button*,但是doIt是指向type的成员函数的指针void (OurMenu::*)()这将不起作用,因为在您的情况下,必须在相同类型的实例上调用成员函数的指针OurMenu如果solo可以强制转换为OurMenu(可能不是),则可以执行

(static_cast<OurMenu*>(solo)->doIt)();

否则,您应该更改设计。看来您想从Button实例中调用菜单功能如果是这样的话,你需要创建的实例OurMenuButton,并调用该实例上的指针,像

OurMenu menu; // this is created somewhere in Button
(menu.*doIt)();

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将一个指向成员函数的指针转换为同一类的另一个

来自分类Dev

两个带有成员函数的类,它们从另一个类获取指向对象的指针

来自分类Dev

指向另一个类中的对象的指针?

来自分类Dev

如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?

来自分类Dev

如果该对象的类在另一个boost模块中声明,如何使用boost将指向C ++对象的指针返回给python?

来自分类Dev

使用另一个类的函数指针

来自分类Dev

如何在python中实现等效于C ++类成员的功能,该成员返回指向另一个类的指针?

来自分类Dev

如何在Typescript类中声明的函数在该类的另一个函数中使用?

来自分类Dev

指向另一个类的方法的指针

来自分类Dev

保持指向另一个类的指针

来自分类Dev

一个文件中的C ++成员类声明。在另一个实施

来自分类Dev

函数声明返回另一个函数的指针

来自分类Dev

如果我在另一个类中使用一个类的对象,是否可以使用指向第一类对象的指针来指向其成员?

来自分类Dev

C ++:如何将指针传递给另一个类的成员函数?

来自分类Dev

C ++如何将成员函数指针传递给另一个类?

来自分类Dev

如何从另一个类调用成员指针函数?

来自分类Dev

指向另一个类中对象的指针数组

来自分类Dev

C++ 指向另一个类中不同类的指针

来自分类Dev

无效使用非静态成员函数-类成员函数调用另一个类成员函数

来自分类Dev

如何在C ++中将指向一个类的指针复制到另一个类中?

来自分类Dev

结构中的指针指向另一个结构

来自分类Dev

如何从另一个函数中修改的结构的字符指针成员中获取值

来自分类Dev

Objective-C-指向一个类的指针与指向另一个类的指针是否不同?

来自分类Dev

我的类(指向另一个类的指针的容器)似乎无法访问公共构造函数

来自分类Dev

另一个类的模板成员函数中的模板类中的调用方法

来自分类Dev

从C ++中的类模板中的函数调用另一个成员函数

来自分类Dev

访问另一个类的指针数组的一个类的成员

来自分类Dev

如何独立于 C++ 中声明的位置在另一个类函数中使用类?

来自分类Dev

添加到函数指针,以获得指向另一个函数的指针?

Related 相关文章

  1. 1

    将一个指向成员函数的指针转换为同一类的另一个

  2. 2

    两个带有成员函数的类,它们从另一个类获取指向对象的指针

  3. 3

    指向另一个类中的对象的指针?

  4. 4

    如何从另一个嵌套类中调用某个封闭类的嵌套类的函数指针成员的值?

  5. 5

    如果该对象的类在另一个boost模块中声明,如何使用boost将指向C ++对象的指针返回给python?

  6. 6

    使用另一个类的函数指针

  7. 7

    如何在python中实现等效于C ++类成员的功能,该成员返回指向另一个类的指针?

  8. 8

    如何在Typescript类中声明的函数在该类的另一个函数中使用?

  9. 9

    指向另一个类的方法的指针

  10. 10

    保持指向另一个类的指针

  11. 11

    一个文件中的C ++成员类声明。在另一个实施

  12. 12

    函数声明返回另一个函数的指针

  13. 13

    如果我在另一个类中使用一个类的对象,是否可以使用指向第一类对象的指针来指向其成员?

  14. 14

    C ++:如何将指针传递给另一个类的成员函数?

  15. 15

    C ++如何将成员函数指针传递给另一个类?

  16. 16

    如何从另一个类调用成员指针函数?

  17. 17

    指向另一个类中对象的指针数组

  18. 18

    C++ 指向另一个类中不同类的指针

  19. 19

    无效使用非静态成员函数-类成员函数调用另一个类成员函数

  20. 20

    如何在C ++中将指向一个类的指针复制到另一个类中?

  21. 21

    结构中的指针指向另一个结构

  22. 22

    如何从另一个函数中修改的结构的字符指针成员中获取值

  23. 23

    Objective-C-指向一个类的指针与指向另一个类的指针是否不同?

  24. 24

    我的类(指向另一个类的指针的容器)似乎无法访问公共构造函数

  25. 25

    另一个类的模板成员函数中的模板类中的调用方法

  26. 26

    从C ++中的类模板中的函数调用另一个成员函数

  27. 27

    访问另一个类的指针数组的一个类的成员

  28. 28

    如何独立于 C++ 中声明的位置在另一个类函数中使用类?

  29. 29

    添加到函数指针,以获得指向另一个函数的指针?

热门标签

归档