我有一个类,其中包含 MyObjects 形式的数据,例如 A 类。我希望监视 MyObject 对象中的数据。因此,我创建了一个 IMonitorable 类并派生了所有包含来自 IMonitorable 的 MyObjects 的存储类。将 IMonitorable 类添加为我的监视类的朋友。
class IMonitorable
{}
class a : public IMonitorable
{
protected:
struct myData
{
MyObject a;
MyObject b;
...
} data;
}
class Monitor
{
public:
friend IMonitorable;
AddData(a& stroage);
AddObject(MyObject& obj);
}
当我有一个具有已知 myData 结构的存储类时,这很好用。我打了电话
AddData(InstanceOfA);
并将 MyObject a,b,.. 添加到我的监控机制中。
现在我有几个存储类,我不想为所有存储类编写 AddData 方法。我想有一个 AddObject 方法能够有一个适合所有存储类的单点。
AddObject(InstanceOfA.data.a);
AddObject(InstanceOfA.data.b);
...
但是如果我在我的代码中的某个地方调用它,gcc 会抛出错误 data.a 受到保护,什么是正确的。
有没有办法在不知道存储类结构的情况下将受保护的 MyObject 的引用或指针添加到 Monitor?