C++模板类继承重载运算符问题

Selena53 Selena53 墨衍会员 · AI 创作全网分发 墨衍智能分发 通过墨衍一键同步至各平台 可同步平台 CSDN微信公众号微博知乎掘金百家号博客园抖音小红书 你的文章也可以这样分发 墨衍会员 ¥399起/年,写一次发全网 我也要 + 加入社区
在重载赋值运算符时老是出错:Invalid allocation size~~
调试的时候发现引用值使用时就不是原值了


不知道哪里出错了T_T
本人小白~~求大神请教

刚用论坛不知道怎么加附件[捂脸]~~粘一个代码先
[code=c][/#ifndef NUMERICARRAY_CPP
#define NUMERICARRAY_CPP
#include "NumericArray.h"
#include "Array.h"

template <typename T>
NumericArray<T>::NumericArray():Array()
{
}
template <typename T>
NumericArray<T>::NumericArray(int newsize):Array(newsize)
{
}
template <typename T>
NumericArray<T>::NumericArray(const NumericArray<T>& arr):Array(arr)
{
}
template <typename T>
NumericArray<T>::~NumericArray()
{
}
template <typename T>
NumericArray<T>& NumericArray<T>::operator = (const NumericArray<T>& nuarr)// the assignment operator
{
if(this == &nuarr)//check if the source object is not the same as the this object
{
return *this;
}
Array::operator = (nuarr);
return *this;
}

template <typename T>
NumericArray<T>& NumericArray<T>::operator + (const NumericArray<T>& arr) const
{
NumericArray<T> result((*this).Size());
if ((*this).Size() == arr.Size())
{
for (int i=0;i<arr.Size();i++)
{
result.SetElement(i, (*this).GetElement(i)+ arr.GetElement(i));
}
}
else throw -1;
return result;
}
template <typename T>
NumericArray<T>& NumericArray<T>::operator * (const double factor) const
{
NumericArray<T> result((*this).Size());
int i;
for (i=0;i<(*this).Size();i++)
{
result.SetElement(i, (*this).GetElement(i) * factor);
}
return result;
}
template <typename T>
double NumericArray<T>::DotProduct(const NumericArray<T>& arr1)
{
double product=0;
if ((*this).Size() == arr1.Size())
{
int i;
for (i=0;i<arr1.Size();i++)
{
product += (*this).GetElement(i)*arr1.GetElement(i);
}
}
else throw -1;
return product;
}
#endifcode]
...全文

相关推荐

评论 3
收藏 已收藏
分享
返回顶部
Selena53
C++ 语言 65,214 成员 250,514 内容