c++ - “C26444 避免使用自定义构造和销毁 (es.84) 的未命名对象”是什么意思?在VS2019中是什么意思?
问题描述
我做了一个这样的分数类并重载了运算符 += 分数类:
class Fraction
{
private:
int numerator, denominator;
public:
Fraction Fraction::operator+=(Fraction fraction)
{
if (this->denominator == fraction.getDenominator())
{
this->numerator += fraction.getNumerator();
}
else
{
this->numerator = (this->numerator * fraction.getDenominator()) + (fraction.getNumerator() * this->denominator);
this->denominator *= fraction.getDenominator();
}
this->reduction();//unimportant
return *this;
}
Fraction(double Number)//constructor
{
this->denominator = 1;
while (((double)(int)Number) != Number)
{
Number = Number * 10;
this->denominator = this->denominator * 10;
}
this->numerator = (int)Number;
this->reduction();
}
但是当我像这样在 main.cpp 中使用 +=
Fraction a(0.25),b(0.125);
a+=b;//C26444 Avoid unnamed objects with custom construction and destruction (es.84)
然后 C26444 出现在 "a+=b" 行
我怎么解决这个问题?
解决方案
推荐阅读
- c++ - 渲染大块时的纹理混叠问题:OpenGL
- python-3.x - python3 - exec(open('....py').read()) - 传输变量
- reactjs - ESLint - 函数反应组件上缺少返回类型 - 打字稿错误解释
- spring-boot - Spring Scheduler 在循环后不会停止,但会在停止并重新触发之前运行 1 分钟
- python - 如何在给定时间后插入用于随机化和操作的命令
- python - Python多线程效率不高
- python - 为什么只有第一个 if 语句在我的 getPostFix 方法中执行?
- android - 在 glide 中设置内存缓存
- julia - 如何使用现有阵列的采样技术创建样本?
- asp.net-core - 如何在 .Net Core 中制作类模型?