Здравствуйте, Lorenzo_LAMAS, Вы писали:
L_L>это элегантно или нет? если да — то посмотри boost::assign
Всё равно приходится перечислять все объекты при добавлении в список.
class ClassList;
class BaseClass
{
public:
BaseClass(ClassList* p)
{
// add this to list
}
};
class SomeClass1 : public BaseClass
{
public:
SomeClass1(ClassList *p): BaseClass(p)
{
}
};
class SomeClass2 : public BaseClass
{
public:
SomeClass2(ClassList *p): BaseClass(p)
{
}
};
class SomeClass3 : public BaseClass
{
public:
SomeClass3(ClassList *p): BaseClass(p)
{
}
};
class Devices
{
private:
SomeClass1 m_obj1;
SomeClass2 m_obj2;
SomeClass3 m_obj3;
public:
Devices(ClassList* p):
m_obj1(p), m_obj2(p), m_obj3(p) {}
};
class ClassList
{
private:
char m_objects[sizeof(Devices)];
list<BaseClass*> m_list;
public:
ClassList()
{
Devices *p;
p = new (m_objects) Devices(this);
}
};
Но пожалуй это уже слишком

Проще будет просто поэлементно заполнить список