我想知道以下情况是否可能。
我有一个类A
,它有一些数据成员,其中一个是容器(假设一个简单的数组)。
现在对于 的构造函数A
,我想传递一个 lambda 函数来初始化类的数据成员。我希望用户能够编写自己的初始化例程并将其应用于类。
例如,考虑这个A
带有 2 个参数的构造函数。第一个是数组的大小,第二个是 lambda 函数。
A(std::function<void (self_type)> f) {
f(*this);
}
现在我将创建一个对象,如下所示:
A a([](A a) {
//do something here to initialize array and data members
});
这样,用户就可以执行自己的初始化,而不是使用类提供的构造函数或其他填充函数。
这可能使用一些技巧吗?如果我能以某种方式this
在 lambda 函数中使用,那就更好了。
例如 -
A a([]() {
//do something here to initialize array and data members
this->_n = 100; // where _n is some data member.
});
欢迎任何可能的解决方案!