简体   繁体   English

C ++类中的数字加减

[英]Number addition and subtraction in c++ classes

Ok, so I'm trying to get my program work, and it seems like something is wrong, but I don't know why. 好的,所以我想让我的程序正常工作,似乎出了点问题,但是我不知道为什么。 Could you guys please look at it and tell me whats wrong? 你们能看一下,告诉我怎么了吗?

The problem is: Subtracting won't work properly :c 问题是:减法将无法正常工作:c

Here's code for Main function (NumberProject.cpp): 这是Main函数(NumberProject.cpp)的代码:

//  NumberProject.cpp : Defines the entry point for the console application.

   #include "stdafx.h"
   #include <iostream>
   #include "Number.h"

    using namespace std;

    int main( ) {
//      Variable and Object Declarations
        char answer;
        bool goAgain = true;

        int  integerValue;

        Number numberA;      // Invoke the default constructor.
        Number numberB;      // Invoke the default constructor.

//      User loop
        while ( goAgain ) {
            cout << "Enter an integer:  ";
            cin >> integerValue;
            numberA.Set( integerValue );

            cout << "Enter an integer:  ";
            cin >> integerValue;
            numberB.Set( integerValue );
            cout << endl;

//          Addition
            numberA.Add( numberB );
            cout << "Addition: ";
            numberA.Output( );

//          Subtraction
            numberA.Subtract( numberB );
            cout << "Subtraction: ";
            numberB.Output( );

//          User loop termination code.
            cout << "Would you like to continue? (y/n)" << endl;
            cin >> answer;
            if ( answer == 'n' )
                goAgain = false;
        } // while
        return 0;
    } // Function main( )

Number.cpp (class): Number.cpp(类):

#include "StdAfx.h"
#include "math.h"     // Needed for sqrt and pow.
#include <string>
#include <iostream>
#include "Number.h"

using namespace std;

Number::Number( void ) {
    number = 0;
}

Number::Number( int integerValue ) {
    number = integerValue;
}

Number::~Number( void ) {
}

int Number::Get( ) {
    return number;
}

void Number::Set( int integerValue ) {
    number = integerValue;
}

void Number::Output( ) {
    cout << number << endl;
    cout << endl;
}

void Number::Add( Number otherNumber ) {
    number = number + otherNumber.Get();
}

void Number::Subtract( Number otherNumber ) {
    number = number - otherNumber.Get();
}

Number.h: Number.h:

#pragma once

class Number {
    public:
        Number( void );
        Number( int );
       ~Number( void );

        int  Number::Get( );       // Accessor
        void Number::Set( int );   // Mutator
        void Number::Output();
        void Number::Add( Number );
        void Number::Subtract( Number );

    private:
        int number;
}; // Class Number
numberA.Subtract( numberB );
cout << "Subtraction: ";
numberB.Output( );

You're outputting the wrong number. 您输入的号码错误。 You want to print numberA . 您要打印numberA

numberA.Subtract( numberB );
cout << "Subtraction: ";
numberA.Output( );       // <-- here

Also, when you do the initial addition, you're updating the in-memory value of numberA ; 同样,当您进行初始加法时,您正在更新numberA的内存中值; when you go to do the subtraction, numberA will already have the sum of numberA + numberB . 当您进行减法运算时, numberA将已经具有numberA + numberB的总和。

Therefore, when you do numberA - numberB , you're going to have to keep a copy of the value of numberA , not save it's value. 因此,当您执行numberA - numberB ,您将必须保留numberA值的numberA ,而不是保存它的值。 Try this: 尝试这个:

int Number::Add(Number otherNumber) {
  return number + otherNumber.Get();
}

int Number::Subtract(Number otherNumber) {
  return number - otherNumber.Get();
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM