Здравствуйте Belegel, Вы писали:
B>Мне просто надо вызвать для каждого элемента списка функцию-член класса этого элемента, которую укажет (тем или иным образом) человек, который будет это все использовать.
B>Брр... Прости, если я туплю, эта жара меня добивает %(...
Ты выражаешься на редкость четко и конкретно. Нет, все понятно. Все делается примерно таком образом. Т.к. ты не привел описания типов, я введу свои, и на их примре мы все увидим.
class CListManager;
class CListElem
{
private:
friend class CListManager;
CListElem() : i( 0 ) {}
void DoSomething() { /*modify data members, for example*/ i++; }
private:
// data members
int i;
};
class CListManager
{
public:
CListManager() : pFirst( new CListElem() ) {};
~CListManager() { delete pFirst; }
void IncAll()
{
for_each( &CListElem::DoSomething );
}
private:
template <class FN>
void for_each( FN fn )
{
for (
CListElem* p = pFirst /*begin()*/;
p != NULL/*end()*/;
p = GetNext()/*p++*/ )
{
(p->*fn)();
}
}
CListElem* GetNext() { return NULL; }
private:
CListElem* pFirst;
};
int main(int argc, char* argv[])
{
CListManager mg;
mg.IncAll();
return 0;
}