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();
}