重载 = 自制向量类的运算符
overloading = operator for self made vector class
我开始编写自己的向量类,并开始重载 = 运算符。我有下面的代码,用于类似 somevector = someothervector
,尽管我不确定它是否正确,因为我坚持为类似 somevector[0] = 5
的东西进行另一个重载,用于提供我的向量值。
myVector& myVector::operator=(const myVector &obj)
{
myVector tem(obj.Size()); //make new empty vector of the needed size then fill below
for (int i = 0; i <= tem.size; ++i)
{
tem.array[i] = obj.array[i];
}
return tem;
}
我有以下内容用于读取向量的元素的 [] 重载,但由于它只是返回元素的值,并且我不确定如何解决赋值问题,我认为这可能是我的主要问题。
int myVector::operator[](int ind)
{
if ( (ind >= 0) && (ind < size) )
{ return array[ind]; }
return 0;
}
有人可以就此提供一些建议吗?
你想在
this
上操作,而不是在临时上。
也就是说,您正在分配给当前对象的数据成员
大致如下:
myVector& myVector::operator=(const myVector &obj)
{
// insert appropriate code here to ensure your array's capacity is sufficient
// to hold obj.size ints
size = obj.size;
for (int i = 0; i < size; ++i)
{
array[i] = obj.array[i];
}
return *this;
}
要启用您请求的语法(somevector[0] = 5
(,您的数组下标运算符必须返回对存储对象的引用,否则您将在临时操作。如果索引不正确,则可能需要在不存在时引发异常。
int& myVector::operator[](unsigned ind)
{
if (ind < size)
return array[ind];
throw std::out_of_range("invalid index");
}
相关文章:
- 向量范数的c++中的||运算符
- 向量保持复数的运算符重载
- C++ STD 函数运算符:有没有一种方法可以通过函数将一个向量映射到另一个向量上?
- 将 [][] 运算符与向量一起使用?
- 尝试重载输出运算符时,我无法遍历对象向量
- 重载运算符 + 用于向量:命名空间标准
- C++ 运算符"="重载 - 在 lhs 上获取向量中的所有值,使其等于 rhs 上的双精度值
- 尝试使用比较运算符对对象向量进行排序
- c++下标运算符到下级类向量
- 为什么与<运算符的向量比较会比较每个项目两次?
- STL按客户"<"运算符对向量进行排序。为什么要将"<"运算符定义为 const?
- 为什么C++向量没有串联运算符?
- 为运算符编写模板<<适用于任何向量
- 如何使用<<运算符将元素添加到向量?
- 使用shared_ptr向量重载 ostream 友元运算符
- 为 2D 向量类创建标量乘法运算符
- 使用向量重载 ostream 运算符
- 重载运算符+以添加存储在向量中的类对象
- 箭头运算符和向量
- 向量<向量<double>>运算符