当前位置: 首页 > 知识库问答 >
问题:

额外的限定条件,无法从“int”转换为“Rational”

司信厚
2023-03-14

我想使用以下方法创建名为Rational的代码类:

a、 Rational()//返回有理数1的默认构造函数

b、 有理(int n,int d)//命名者是n,分母是d。

c、 int getNumerator()常量

d、 int getDenominator()常量

e.有理负数()const//返回-n/d

F.有理互惠()const//返回d/n

g、 布尔运算符==(常数有理)

h、 Rational add(const Rational)

i、 有理减法(const有理)

j、 有理乘法(const-Rational)

k、 有理分界(const-Rational)


using namespace std;

class Rational
{
    private:
        int numerator;
        int denominator;

    public:
    Rational()
    {
        numerator = denominator = 1;
    }

    Rational(int n, int d)
    {
        numerator = n;
        denominator = d;
    }

    int getNumerator() const
    {
        return numerator;
    }   

    int getDenominator() const
    {
        return denominator;
    }

    Rational negate() const
    {
        return -numerator/denominator;
    }

    Rational reciprocal() const
    {
        return denominator/numerator;
    }

    bool operator==(const Rational& other)
    {
        if(numerator == other.numerator && denominator == other.denominator)
        {
            return true;
        }
        else
            return false;
    }

    Rational add(const Rational& a) const
    {
        Rational t; // creates Rational object
        t.numerator = a.numerator * denominator;
        t.numerator += a.denominator * numerator;
        t.denominator = a.denominator * denominator;
    return t;
    }

    Rational subtract(const Rational& b) const
    {
        Rational t; // creates Rational object
        t.numerator = b.denominator * numerator;
        t.numerator -= denominator * b.numerator;
        t.denominator = b.denominator * denominator;
    return t;
    }

    Rational multiply(const Rational& m) const
    {
        Rational t; // creates Rational object
        t.numerator = m.numerator * numerator;
        t.denominator = m.denominator * denominator;            
    return t;
    }

    Rational divide(const Rational& d) const
    {
        Rational t; // creates Rational object
        t.numerator = d.denominator * numerator;
        t.denominator = denominator * d.numerator;
    return t;
    }

    void Rational::printRational ()
    {
        if ( denominator == 0 ) // validates denominator
        cout << "\nDIVIDE BY ZERO ERROR!!!" << '\n';
        else if ( numerator == 0 ) // validates numerator
        cout << 0;
        else
        cout << numerator << '/' << denominator;
    } 

    void Rational::printRationalAsDouble()
    {
        cout << static_cast< double >( numerator ) / denominator;
    } 
};

int main() {
    Rational c( 2, 6 ), d( 7, 8 ), x; 
    c.printRational(); 
    cout << " + ";
    d.printRational();
    x = c.add( d ); 
    cout << " = ";
    x.printRational(); 
    cout << '\n';
    x.printRational(); 
    cout << " = ";
    x.printRationalAsDouble(); 
    cout << "\n\n";
    c.printRational(); 
    cout << " - ";
    d.printRational(); 
    x = c.subtract( d ); 

    cout << " = ";
    x.printRational(); 
    cout << '\n';
    x.printRational(); 
    cout << " = ";
    x.printRationalAsDouble(); 
    cout << "\n\n";
    c.printRational(); 
    cout << " x ";
    d.printRational(); 
    x = c.multiply( d );

    cout << " = ";
    x.printRational(); 
    cout << '\n';
    x.printRational(); 
    cout << " = ";
    x.printRationalAsDouble();  
    cout << "\n\n";
    c.printRational(); 
    cout << " / ";
    d.printRational(); 
    x = c.divide( d ); 

    cout << " = ";
    x.printRational(); 
    cout << '\n';
    x.printRational(); 
    cout << " = ";
    x.printRationalAsDouble();  
    cout << endl;
    return 0;
} 

但我认为这些错误

主要的cpp:87:10:错误:成员“printRational”[-fpPermissive]void Rational::printRational()上的额外限定“Rational::”^~~~~~~~

主要的cpp:97:10:错误:额外限定“Rational::”在成员“PrintRationalAlasDouble”[-fpPermissive]void Rational::PrintRationalAlasDouble()上^~~~~~~~

main.cpp:在成员函数'Rational Rational::否定()const':main.cpp:35: 26:错误:无法转换'((-(int)((const Rational*)this)-

主要的cpp:在成员函数'Rational::Interactive()const'中:main。cpp:40:27:错误:无法转换“((int)((const Rational*)this)-

共有1个答案

张宣
2023-03-14

ulualRational::printRational更改为ulualprintRationalprintRationalAsDouble相同。直接在类中定义函数时,您不会指定后跟::的类名

另外,在否定中有返回-分子/分母 但这是无效的,因为它无法将其转换为返回类型Rational。你可能想要返回有理数(-分子,分母),并为您的互惠函数提供类似功能。如果您试图返回操作的结果,而不是一个新对象,那么您只需更改返回类型即可。

 类似资料:
  • 问题内容: 我想对成绩簿方法使用2D数组,其中包含学生姓名,然后是考试成绩。在课堂上,我有以下内容。 但是我得到一个错误int []无法转换为int。 问题答案: 你有: 但是是一个。数组维数必须为,因此不能用作数组维数(鉴于字面量是多少,我可以理解您对错误的困惑:它想要一个,但您给了它一个)。 从您的描述来看,我猜您的意思是: 哪里是你需要的,包含考试的次数。不过,只是一个猜测。

  • 问题内容: 这里是编程的新手,并且我一直收到错误消息,“不兼容的类型,不能将int转换为int []”,问题是如果R1和R2的长度相等,则将它们加在一起,如果没有打印出一条信息,说明“数组的长度必须相同”,如果这很重要,则不知道我在哪里出错,将不胜感激任何帮助 问题答案: 您需要分配给数组元素,但是这样做做错了。

  • 问题内容: 我想将SQL COUNT的结果存储在变量中,然后将它们除,但是出现错误: 注意:类mysqli_result的对象无法在----中转换为int 我曾经在测试时显示结果…我该如何解决? 问题答案: 您需要先获取结果并将其存储在变量中,然后再进行数学运算。

  • 之前,我已经实施了此功能,并且它起到了作用: 我甚至可以用下面的东西检查我是否得到了正确的尺寸,一切都很好。 但是,在使用以下初始化尝试整个程序时,我得到了一个编译错误: 以下是错误消息: rbm. cpp:在函数“ululemexFunction(int, mxArray**, int, const mxArray**)”中:rbm. cpp: 570:64: error:从“int”到“int

  • 问题内容: 我正在使用eclipse java ee执行Java编程。 我的其中一个功能中包含以下代码行: 我收到以下错误: 类型不匹配:无法从int转换为Long 我不太明白为什么当我在变量中添加数字时会出现此错误。 该问题如何解决?为什么首先发生? 问题答案: 对象之间没有转换,因此您需要从中进行转换。加a 使整数成为(): 但是,从进行了转换,因此可以使用: 因此,您也可以这样编写: 从一个

  • 我试图检查一个数字是否是一个完美的平方。然而,我正在处理非常大的数字,所以python认为它的无穷大出于某种原因。有办法绕过这个吗?这是代码,第一个变量只包含一堆非常非常非常非常大的数字