我对C++有点陌生,我必须解决以下问题。
我必须创建一个Sum(limit)类的对象,用户可以输入数字,直到所有输入的数字之和达到极限。
主函数必须是这样的,而且不能改变。
int main (){
Sum sum(100);
std::cout << "Enter numbers\n";
do{
std::cin >> sum;
} while (!sum.exceededlimit());
std::cout << "The sum of all the components is : " << sum() << "\n";
return 0;
}
所以我创建了一个类,里面放了一个空的向量。目前,我的问题是如何重载输入操作符,使输入可以直接进入对象的向量中。
这是我到现在为止所尝试的(我没有尝试限制部分,我现在只是想把输入添加到一个向量中),但似乎输入>>c.newnumber(input)有问题。
如果你能抽出时间来帮助我,非常感谢。
代码。
#include <iostream>
#include <vector>
class Sum {
private:
int limit;
public:
std::vector<int> vect;
int newnumber(int x){
vect.push_back(x);}
Sum(int x);
};
std::istream & operator>>(std::istream &input, Sum & c){
input>>c.newnumber(input);
return input;
}
Sum::Sum(int x) {
limit=x;
}
int main () {
Sum sum(100);
std::cin >> sum;
std::cin >> sum;
std::cin >> sum;
std::cin >> sum;
std::cin >> sum;
return 0;
}
让我们来看看我们要解决的问题......。
你有一个 newnumber()
函数,将采取一个 int
并将其添加到您的 Sum
对象。
在你的插入操作符重载中,你被赋予了一个 Sum
对象和 istream
对象。我们知道我们有 newnumber()
在...上 Sum
对象,但我们只有在有一个 int
! 那么,我们如何才能得到一个 int
来自 istream
然后传给你的 Sum
?
我会这样做。
std::istream & operator>>(std::istream &input, Sum & c){
int val;
input >> val;
// Maybe do some validation checking here?
c.newnumber(val);
return input;
}