我想要一个类的函数,我必须在它应用函数之前清除该类,而不必每次在使用默认构造函数的循环中询问该类的函数时手动执行它(就像我现在一样)
一个例子
class Hello
{
public:
std::vector<int> a,b,c; //,d,e,... etc...
void set ( int value )
{
a.push_back(value);
b.push_back(value);
c.push_back(value);
//d.push_back...
//e.push_back...
//etc...
return;
}
};
std::ostream& operator<<(std::ostream& os, const Hello &hello)
{
for ( int i=0; i<hello.a.size(); i++ )
{
os << hello.a[i] << "\t";
os << hello.b[i] << "\t";
os << hello.c[i] << "\t";
//etc...
os << std::endl;
}
os << std::endl;
return os;
}
主要的地方
Hello hello;
for ( int i=0; i<5; i++ )
{
hello = Hello(); //want to get rid of this line and move its functionality to the set function
hello.set(i);
std::cout << hello << std::endl;
}
这将产生正确的结果,但是如果我删除清除变量的行(hello = Hello()),那么set函数将继续附加到向量,并且在向量追加之前不清除向量。 / p>
所以基本上我不想担心必须在每次循环set函数时键入行hello = Hello()。通过将变量的清除结合到类本身的set函数中。
在push_back函数可以工作之前键入a.clear(),b.clear()等...但是有很多向量可能会有很多行。我一直在寻找更优雅的解决方案。