Qt の signal を connect した slot から emit したらループになるよなぁとでっち上げてみた. 実用性皆無なループ,というより,無駄に回り道をした末尾再帰.

int 固定じゃなくて ++ なり -- なりを持った iterator と,それを引数にとって bool を返す関数オブジェクトとで template にすれば汎用性は増すかもしれないけど.

fss.hpp

lang:cplusplus
#ifndef FSS_HPP
#define FSS_HPP
#include <QObject>
class fss : public QObject {
  Q_OBJECT
  public:
    fss( QObject * parent = 0 );
  public slots:
    void loop(int);
  signals:
    void next(int);
};
#endif // FSS_HPP

fss.cpp

lang:cplusplus
#include <QDebug>
#include "fss.hpp"
fss::fss( QObject * parent ): QObject(parent){
  QObject::connect( this, SIGNAL(next(int)), this, SLOT(loop(int)));
}
void fss::loop(int i){
  if ( i > 0 )  {
    qDebug() << "loop: i : " << i ;
    emit next( i - 1 );
    qDebug() << "emit: i : " << i ;
  }
}

main.cpp

lang:cplusplus
#include <QtCore/QCoreApplication>
#include "fss.hpp"
int main(int argc, char *argv[]){
  QCoreApplication a(argc, argv);
  fss f;
  f.loop(5);
  return a.exec();
}