在我的系统中,我需要将一个类的成员发送到一个外部对象进行处理(我们称之为 a processor
)。成员被processor
暂时保留,并将根据某些条件从处理器中删除。nullptr
如以下示例所示,成员设备和处理器由 DeviceContainer 拥有,因此从我可以看出访问处理器内部不应该有问题。但是存储原始指针列表似乎通常是一个坏主意,所以我想问一下在DeviceProcessor
下面列出的结构中存储指针数组可能是更好的选择。
class DeviceA : public DeviceBase
{};
class DeviceB : public DeviceBase
{};
class DeviceContainer
{
public:
DeviceContainer()
{
processor.addDevice(&a);
processor.addDevice(&b);
}
void process()
{
processor.doSomethingWithDevices();
}
private:
DeviceA a;
DeviceB b;
DeviceProcessor processor;
};
struct DeviceProcessor
{
public:
void addDevice(DeviceBase* d)
{
device.push_back (d);
}
void doSomethingWithDevices()
{
for (auto d : devices)
d->doSomething();
}
private:
std::vector<DeviceBase*> devices;
};