我已经开始深入研究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);
}
答案 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);
虽然我必须承认我不太明白这项工作的重点。