【问题标题】:C++ pointer to object's class member指向对象类成员的 C++ 指针
【发布时间】:2017-03-10 15:21:35
【问题描述】:

我有一个里面有一个数组的类。在这个数组内部,我想把一个函数指针指向一个函数,这个函数与我的实例具有相同的 this 指针。

class Foo {
   std::vector <void (*baz)> bar;
   void baz () {};
}

Foo bundy;
bundy.bar.push_back (/*???*/); 

如何做到这一点?我想,当我像&amp;Foo::baz() 一样运行它时,baz 没有(有效)this 指针或不指向实例。

什么是好的解决方法?

【问题讨论】:

    标签: c++ function class pointers


    【解决方案1】:

    您可以存储std::function&lt;void()&gt;,而不是存储指向*baz 的指针。

    然后你可以存储一个带有绑定实例的 lambda:

    Foo bundy;
    bundy.bar.push_back([&bundy](){ bundy.baz(); });
    

    您的班级将如下所示:

    class Foo {
      public:
        std::vector<std::function<void()>> bar;
        void baz() {};
    };
    

    【讨论】:

    • 什么是 lambda?感谢您的回答;)
    • @Ceros 非常感谢;)
    • 问题:如果我想将“函数指针”转置为变量,我该怎么做?
    • 另一个问题:如何使用this指针代替类名? [&this] () {this.mamber();} 似乎不起作用
    猜你喜欢
    • 2018-03-24
    • 2014-01-02
    • 1970-01-01
    • 2011-05-17
    • 2013-05-02
    • 1970-01-01
    • 2021-08-11
    • 2016-02-25
    • 1970-01-01
    相关资源
    最近更新 更多