C ++如何创建一个循环并递增1的类对象?

时间:2014-06-07 10:27:47

标签: c++ class loops object increment

我有三个文件,输出是我想要的,但它不是很优雅。

有没有办法只让对象num (122)num(554)按顺序输出下一个数字五次而不必每次<< cout <<

这是main.cpp:

#include <iostream>
#include "number.h"

using namespace std;

int main()
{
  Number obj(122);

  cout << Nobj (122) << endl;
  cout << Nobj (123) << endl;
  cout << Nobj (124) << endl;
  cout << Nobj (125) << endl;
  cout << Nobj (126) << endl;

  cout << Nobj (554) << endl;
  cout << Nobj (555) << endl;
  cout << Nobj (556) << endl;
  cout << Nobj (557) << endl;
  cout << Nobj (558) << endl;
}

标题文件:

#ifndef NUMBER_H
#define NUMBER_H

class Number
{
public:
    Number(int numA);
    int operator ()(int numB);

    int numA;
};

#endif

number.cpp:

#include <iostream>
#include "number.h"

using namespace std;


Number::Number(int numC): numA(numC)
{}

int Number::operator()(int numB)
{
    int i = 0;

    while(i < 10)
    {
        return numB += 1;
        i++;
    }

}

输出是:

123
124
125
126
127 
555
556
557
558
559   

编辑:

for(int i = 0; i < 5; ++i)
{
    cout << Nobj (122+i) << endl;
}

for(int i = 0; i < 5; ++i)
{
    cout << Nobj (554+i) << endl;
}

2 个答案:

答案 0 :(得分:1)

我认为这个功能可以帮助你。

inline void print_nums(const size_t start_num, const size_t loop_times) { for (size_t i = 0; i < loop_times; ++i) { std::cout << (start_num + i); std::cout << std::endl; } }

答案 1 :(得分:0)

为了防止一直写cout你可以重载&lt;&lt;操作

 friend std::ostream& ::operator <<(std::ostream& stream );

如果您想按顺序输出对象,例如:

  • 围绕正在重载的类Number编写一个包装类&lt;&lt;运算符和存储所有已创建的Number对象
  • 在Number-Class中存储指向下一个对象的单个链接引用/指针(天真列表或队列实现)。运算符&lt;&lt;将递归调用自身对下一个对象,直到它为nullptr