使用函数重载输入运算符
Input operator overloading with a function
我对 C++ 有点陌生,我必须解决以下练习:
我必须创建一个 class 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;
}
所以我创建了 class 并在其中放置了一个空向量。现在,我遇到的问题是如何重载输入运算符,以便输入可以直接进入对象的向量。
这是我到目前为止尝试过的方法(我没有尝试限制部分,我现在只是尝试将输入添加到向量中)但是它似乎有输入问题>>c.newnumber(输入);
非常感谢你抽出时间来帮助我。
代码:
#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
对象。我们知道我们在 Sum
对象上有 newnumber()
,但只有当我们有 int
时才能使用它!那么我们怎样才能从 istream
得到一个 int
然后传递给你的 Sum
?
我会这样做:
std::istream & operator>>(std::istream &input, Sum & c){
int val;
input >> val;
// Maybe do some validation checking here?
c.newnumber(val);
return input;
}
我对 C++ 有点陌生,我必须解决以下练习:
我必须创建一个 class 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;
}
所以我创建了 class 并在其中放置了一个空向量。现在,我遇到的问题是如何重载输入运算符,以便输入可以直接进入对象的向量。
这是我到目前为止尝试过的方法(我没有尝试限制部分,我现在只是尝试将输入添加到向量中)但是它似乎有输入问题>>c.newnumber(输入);
非常感谢你抽出时间来帮助我。
代码:
#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
对象。我们知道我们在 Sum
对象上有 newnumber()
,但只有当我们有 int
时才能使用它!那么我们怎样才能从 istream
得到一个 int
然后传递给你的 Sum
?
我会这样做:
std::istream & operator>>(std::istream &input, Sum & c){
int val;
input >> val;
// Maybe do some validation checking here?
c.newnumber(val);
return input;
}