簡體   English   中英

C ++類中的數字加減

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

好的,所以我想讓我的程序正常工作,似乎出了點問題,但是我不知道為什么。 你們能看一下,告訴我怎么了嗎?

問題是:減法將無法正常工作:c

這是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(類):

#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:

#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( );

您輸入的號碼錯誤。 您要打印numberA

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

同樣,當您進行初始加法時,您正在更新numberA的內存中值; 當您進行減法運算時, numberA將已經具有numberA + numberB的總和。

因此,當您執行numberA - numberB ,您將必須保留numberA值的numberA ,而不是保存它的值。 嘗試這個:

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