gpt4 book ai didi

c++ - 数值数组类 : Multiplication using friend functions

转载 作者:行者123 更新时间:2023-11-28 00:14:20 25 4
gpt4 key购买 nike

几天来我一直在努力解决这个错误。我制作了一个通用数组类,从中我使用通用继承来创建一个数字数组。一切都很完美;但是,我在数字数组的乘法/缩放方面遇到了麻烦。我以下列标准方式重载了 operator*:

  //Scaling operator 
template <typename Type>
NumericArray<Type>& NumericArray<Type> :: operator * (const double factor) // scaling the elements
{
for (int i = 0; i < (*this).size(); i++)
{
(*this)[i] *= factor;
}
return *this;
}

当然,由于这个实现要求的固有顺序,我只能用array * 2的方式做乘法。但是我也希望能写成2 * array。所以我决定实现一个好友功能如下:

template <typename Type> 
NumericArray<Type> operator* (Type factor, const NumericArray<Type>& num_array)
{
return(num_array * factor);
}

这个友元函数的声明如下:

template <typename Type> friend NumericArray<Type> operator * (double factor, const NumericArray<Type>& num_array);

但是当我尝试在 main() 中写入 2 * 数组时,我收到错误消息:

严重性代码描述项目文件行错误 C2678 二进制“*”:未找到采用“const NumericArray”类型的左侧操作数的运算符(或没有可接受的转换)

这个错误让我觉得 main() 甚至没有识别出友元函数的存在。我以前用过几次友元函数,但我对模板还很陌生。有人告诉我,模板和泛型编程通常有一些奇怪的古怪必需品,这可能会导致无法预料的情况。

对于任何想要查看完整程序的人,请查看保管箱链接: https://www.dropbox.com/sh/86c5o702vkjyrwx/AAB-Pnpl_jPR_GT4qiPYb8LTa?dl=0

再次感谢您的帮助:)

最佳答案

NumericArray<Type> friend 函数中是const,不能调用非const 函数--- NumericArray<Type>& NumericArray<Type> :: operator * (const double factor)

关于c++ - 数值数组类 : Multiplication using friend functions,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31308865/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com