C++类型限定符问题

Lee*_*Lee 7 c++ types qualifiers

作为我的计算机软件开发学位的一部分,我的一个实验室包括创建计算器类模板和分数类.

问题在于我的分数类.我的任务是重载加号运算符以允许将两个分数加在一起.

Fraction.cpp:

#include "Fraction.h"

const Fraction Fraction::operator+ (const Fraction &rhs) const
{
    return Fraction(_num * rhs.GetDen() + (rhs.GetNum() * _den), _den * rhs.GetDen());
}
Run Code Online (Sandbox Code Playgroud)

Fraction.h

#pragma once

class Fraction
{
    public:
        Fraction(const int &num, const int &den) : _num(num), _den(den) {}
        ~Fraction(void) {}
        const int GetNum(void) { return _num; }
        const int GetDen(void) { return _den; }
        const Fraction operator+ (const Fraction &rhs) const;

    private:
        const int _num, _den;
};
Run Code Online (Sandbox Code Playgroud)

Visual Studio抱怨我的分数访问器不能"将此指针从const分数转换为分数&".我完全不知所措.

Gun*_*iez 12

您还需要将访问者限定为const:

int GetNum(void) const { return _num; }
Run Code Online (Sandbox Code Playgroud)

顺便说一句,将返回类型限定为const int并不是真的有意义,无论如何它都将是一个int.您的编译器应发出警告.