【发布时间】:2021-04-22 16:18:33
【问题描述】:
我有一个向量,它存储Sensor 类型的类,每个类都有一个成员函数refresh()。这个向量是我班级的成员LogManager。
class Sensor
{
public:
void refresh();
}
class LogManager
{
private:
std::vector<Sensor*> sensors;
void refresh_sensors()
{
// TODO: use foreach
for (uint i=0; i<sensors.size(); i++)
{
sensors[i]->refresh();
}
for_each(sensors.begin(), sensors.end(), [sensors]( void* ) void* -> {refresh();} );
}
}
我想做的是将 for 循环更改为 std::for_each() 实现。您在上面看到的是我的第一次尝试。
如何使用for_each() 函数访问成员函数Sensor::refresh()?
使用类似上面的标准 for 循环,我只使用 -> 运算符。
Stretch 的目标也是用指针替换std::vector<Sensor*> sensors;:std::vector<Sensor*>* sensors;,这样我就不必使用副本了。在这种情况下,实现会如何?
【问题讨论】: