Я хочу создать такие значения: (я должен использовать следующий синтаксис). Таким образом, целью является создание значений с помощью STL-функции generate_n и класс-функтор «Sequencegenerator», который является функцией шаблона. Моя проблема в том, что я не знаю, как вернуть значение и как сохранить его для следующего вызова. Вниз есть мой код ... большое вам спасибо! (Я должен решить, не используя оператор()Как вернуть значение без вызова функции?
// Numbers from 1 to 10
generate_n(ostream_iterator<int>(cout, " "), 10, SequenceGenerator<int>(1));
cout << endl;
// Numbers from 10 to 1 (descending order)
generate_n(ostream_iterator<int>(cout, " "), 10, SequenceGenerator<int>(10, -1));
cout << endl;
// Numbers from 0 to 5 (increment 0.5)
generate_n(ostream_iterator<double>(cout, " "), 11, SequenceGenerator<double>(0, 0.5));
cout << endl;
// Letters from A to Z
generate_n(ostream_iterator<char>(cout, ""), 26, SequenceGenerator<char>(’A’));
cout << endl;
МОЙ КОД:
#include <algorithm>
#include <iterator>
#include <iostream>
#include "SequenceGenerator.h"
using namespace std;
template <typename T>
class SequenceGenerator : public std::unary_function<T,T>
{
public:
SequenceGenerator(T const start, T const inc):mStart(start),mInc(inc)
{
return mStart = mStart + inc;
}
private:
T const mInc;
static T mStart; //static T mStart
};
int main()
{
generate_n(ostream_iterator<int>(cout, " "), 10, SequenceGenerator<int>(10,1));
return 0;
}
Я уверен, что 'static' здесь не то, что вам нужно ... –
Кроме того, почему вы хотите избежать' operator() '? –
Предполагается, что это время компиляции? –