如何创建一个循环并加1的类对象

C++ How to create a class object that loops and increments by one?

本文关键字:对象 循环 何创建 创建 一个      更新时间:2023-10-16

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

是否有任何方法可以让对象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;
}

我想这个函数可能对你有帮助。

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

为了避免一直写入计数,您可以重载<<操作符

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

如果你想按顺序输出对象,你可以这样:

  • 在类Number周围创建一个包装器类,该类是重载的<<操作符并存储所有创建的Number对象
  • 在Number-Class中存储指向下一个对象的单个链接引用/指针(幼稚的列表或队列实现)。操作符& lt; & lt;将在以下对象上递归地调用自身,直到其为nullptr