相关疑难解决方法(0)

通过std :: function引用的Functor

基本上,我想有以下语义:

#include <functional>
#include <iostream>

class test
{
  public:
    void add(std::function<void()> f)
    {
      f();
    }

    void operator()()
    {
      ++x;
    }

    int x = 33;
};

int main()
{
  test t;
  t.add(t);
  // wanted: x == 34 instead: x == 33 since add(t) copies it
}
Run Code Online (Sandbox Code Playgroud)

我理解std :: function包装了一个可调用对象的副本,但有没有办法使用std :: function获取对可调用对象的引用?

c++ c++11 std-function

20
推荐指数
1
解决办法
4494
查看次数

从构造函数初始化列表中传递此函数

将"this"传递给以下代码中初始化列表中的另一个对象时是否有任何问题?

class Callback { public: virtual void DoCallback() = 0; }; 

class B
{
    Callback& cb;
public:
    B(Callback& callback) : cb(callback) {}
    void StartThread();

    static void Thread() 
    {
        while (!Shutdown())
        {
            WaitForSomething();
            cb.DoCallback();
        }
     }
};

class A : public Callback
{
    B b;
public:
    A() : b(*this) {b.StartThread();}
    void DoCallback() {} 
};
Run Code Online (Sandbox Code Playgroud)

如果这样做是不安全的,那么最好的替代方案是什么?

c++

10
推荐指数
2
解决办法
5333
查看次数

标签 统计

c++ ×2

c++11 ×1

std-function ×1