C++ (Qt)void setHealthCalculator( HealthCalcFunc hcf ) { healthFunc = hcf;}
C++ (Qt)typedef int (*HealthCalcFunc)(const GameCharacter&);
C++ (Qt)typedef std::function<int (const GameCharacter&)> HealthCalcFunc;
C++ (Qt)#ifndef FUNCTIONS_FOR_HEALTHCALC_H#define FUNCTIONS_FOR_HEALTHCALC_H namespace GameStuff { class GameCharacter; // опережающее объявление /** * Функции вычисления жизненной силы; она возвращает не int */ short calcHealth( const GameCharacter& gc ); /** * Класс функциональных объектов, вычисляющих жизненную силу */ struct HealthCalculator { int operator()(const GameCharacter&) const { return 5; } }; /** * Функция алгоритма по умолчанию для вычисления жизненной силы персонажа */ int defaultHealthCalc( const GameCharacter& gc ); /** * Функции вычисления жизненной силы с другим поведением */ int loseHealthQuickly( const GameCharacter& gc ); /** * Функции вычисления жизненной силы с другим поведением */ int loseHealthSlowly( const GameCharacter& gc );} #endif // FUNCTIONS_FOR_HEALTHCALC_H
C++ (Qt) bool ok; float x = listForPoints[1].toFloat( &ok ); if ( !ok ) { throw( BadLine( list[i].toStdString(), i ) ); } float y = listForPoints[2].toFloat( &ok ); if ( !ok ) { throw( BadLine( list[i].toStdString(), i ) ); } float z = listForPoints[3].toFloat( &ok ); if ( !ok ) { throw( BadLine( list[i].toStdString(), i ) ); } points.append( QVector3D( x, y, z ) ); } else { throw( BadLine( list[i].toStdString(), i ) ); }