Реализация Foreach на C ++, подход бедняков

Есть счастливые люди, работающие с boost и Qt. В моем текущем «встроенном» проекте мне приходится использовать самодельные классы-контейнеры. Хорошо, хватит жалоб.

Я попытался реализовать простой и автономный foreach, подобный этому:

#define ForEachString(S,C) TString S;\
        for ( int i=0; i<C.GetSize() && (!!(&(S=C[i]))); ++i  )

Он выполняет итерацию по списку строк, который имеет методы op [] и GetSize (). Например:

TStringList tables;
ForEachString( table, tables )
{
  //do sth. with tab.
}

Конечно, самая уродливая вещь, Поэтому мой вопрос: возможно ли сделать это контейнерно-независимым и по-прежнему самодостаточным (все требуемые вещи в макроопределении)?

С уважением, Valentin

7
задан Valentin Heinitz 3 December 2010 в 00:25
поделиться