使用bind或lambda将NULL函数指针传递给类构造函数

时间:2014-07-29 01:32:56

标签: c++ c++11 lambda bind

我已经开始深入研究C ++ 11,但是我无法理解正确的上下文,我可以使用bind和lambdas。

具体来说,我想创建一个类,它接受一些类的指针和一个int ID,告诉哪个可用的类指针已经传递。所有其他指针都设置为NULL。该函数接受一些指针,而不是定义一大堆ClassX* clX = NULL,而不是我希望函数只接受一个指针和适当的ID。

我把我的“测试”文件放在下面。有人能看出它有什么问题吗?我仍然很擅长做C ++(在MATLAB中开始),所以如果你看到任何风格问题,请告诉我。

#include <iostream>
#include <functional>

using namespace std;
using namespace std::placeholders;

class ClassB1 {
public:
    ClassB1() {}
};
class ClassB2 {
public:
    ClassB2() {}
};
class ClassB3 {
public:
    ClassB3() {}
};

class ClassA {
public:
    ClassA(ClassB1* b1, ClassB2* b2, ClassB3* b3, int ID) {
        //Find look at ID and do something with appropiate class pointer
    }
};

int main()
{
    ClassA lambdaFunc = [] (ClassB1* _b1, int id) { return ClassA::ClassA(_b1, NULL, NULL, id)};
    ClassA bindFunc = bind(ClassA::ClassA,_1,NULL,NULL,_2);
    ClassB1 _b1 = ClassB1();
    _id = 1;
    lambdaFunc(&_b1, _id);
    bindFunc(&_b1, _id);
}

1 个答案:

答案 0 :(得分:1)

如果由于某些奇怪的原因你坚持使用lambda来解决这个问题,那就把它搞定吧

  auto lambdaFunc = [] (ClassB1* _b1, int id) {
    return ClassA(_b1, NULL, NULL, id);
  };
  ClassB1 _b1;
  int _id = 1;

  ClassA a = lambdaFunc(&_b1, _id);

虽然我必须承认我不太明白这项工作的重点。