首页 > 解决方案 > “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++visual-studiovisual-studio-2019

解决方案


推荐阅读