Sem*_*ide 2 c++ operator-overloading
我想重载'>>'运算符,以便有人可以输入任意数量的值.
这是我正在进行的任务中的要求verbatum:
运算符>>应该期望以下列形式看到输入:d v1 v2 ... vd,其中d是向量的维数,每个vi是对应于向量中索引i的值.
我认为它的工作方式是第一个值是数组的大小(包含在对象Vex中),其余的将是元素.所以,如果他们要输入
Vex vX;
4, 1, 2, 3, 4 >> vX;
Run Code Online (Sandbox Code Playgroud)
vX将创建一个大小为4的动态数组,其中包含数字1-4.
我挂断的主要部分是如何编程>>重载,因为会有可变数量的参数.
理想情况下,我会有一个解决...的效果(这只是一个例子):
std::istream& Vex::operator>>(istream& is, const Vex&){
/*
Assume int * data has been previously declared in constructor
data = new int[iterator[0]]
create iterator of input for istream
For n from 1 to iterator[0]...
data[n] = iterator[n]
*/
}
Run Code Online (Sandbox Code Playgroud)
我只是不知道该怎么做.我一直在环顾四周,我找到了istream_iterator,但我找不到有人使用它的方式我需要使用它的任何好例子.
我希望我提供的信息足以回答这个问题.如果没有,请告诉我.
非常感谢您的宝贵时间.
您的老师并没有要求您重载operator>>
以获取可变参数列表.他要求你以operator>>
这样的方式重载,它在运行时解析变量长度输入,由用户(或文件或任何istream
对象)给出.您需要的签名是:
std::istream& operator>>(istream& is, Vex& v)
Run Code Online (Sandbox Code Playgroud)
它不应该是成员函数,但您可能需要它成为朋友.
我对这个Vex
类一无所知,所以我不能告诉你如何编写这个函数,但它会是这样的:
read an integer N from the stream
set size of Vex object as N, however that's done
for i = 1 to N
read number X from the stream
store X in Vex object at position i
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
6701 次 |
最近记录: |