Как видно из названия, я ищу какую-то структуру данных, которая позволила бы мне хранить в ней любой тип класса, который мне нужен в данный момент. Например:
Foo *foo = new Foo();
Bar *bar = new Bar();
someContainer.push_back( foo );
someContainer.push_back( bar );
someContainer.access( 0 )->doFooStuff();
someContainer.access( 1 )->doBarStuff();
В идеале, как я там показал, это также позволило бы мне получить доступ к содержимому и использовать их функции / и т.д.
Я хочу один из них, поскольку я пытаюсь создать «невидимую» систему управления памятью, которая просто требует, чтобы класс унаследовал мой класс диспетчера памяти, и все будет работать автоматически.
Вот пример того, как должен выглядеть код:
template< class T >
class MemoryManaged
{
MemoryManaged()
{
container.push_back( this );
}
void *operator new()
{
// new would probably be overloaded for reference counting etc.
}
void operator delete( void *object )
{
// delete would most definitely overloaded
}
T &operator=( T &other )
{
// = overloaded for reference counting and pointer management
}
static SomeContainer container;
}
class SomeClass : public MemoryManaged< SomeClass >
{
// some kind of stuff for the class to work
};
class AnotherClass : public MemoryManaged< AnotherClass >
{
// more stuff!
};
Я надеюсь, что мой код поможет прояснить, что именно я хочу сделать. Если кто-то знает какую-то уже построенную структуру данных, которая позволила бы мне сделать это, это было бы здорово. В противном случае, я сейчас работаю над созданием какого-то зомби-зомби из связанного списка, который использует шаблонные узлы, чтобы связать любой тип класса с любым другим типом класса. Я до сих пор не знаю, как мне заставить его работать, и я бы хотел, чтобы его избавили от крови, пота и слез (и волос), которые понадобятся, чтобы понять, как заставить это работать.