2013-10-24 34 views
0

好吧,所以我試圖讓我的程序工作,它似乎有什麼錯,但我不知道爲什麼。請你們看看它,並告訴我最新的錯誤?C++類中的數字加法和減法

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

下面是主要功能(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 
+0

它是如何「不能正常工作」的? – yizzlez

+0

您確定要在減法後輸出'numberB'的值嗎?這個數字不會從所給出的數字改變。 – atomicinf

+2

你有比你的真實代碼更多的評論。 – billz

回答

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

您輸出的編號錯誤。您要打印numberA

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

另外,當您進行初始添加時,您正在更新numberA的內存中值;當你去做減法時,numberA已經有numberA + numberB的總和。

因此,當你做numberA - numberB,你將不得不保留一個numberA的值的副本,而不是保存它的值。試試這個:

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

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

沒問題。在我在這裏問了一個問題之前,我嘗試了這個方法,但沒有成功。不知何故,它輸出一個NumberA的值。不競爭減法結果:o – papi

+0

等一下。在添加完成後,您正在修改'numberA'的內存值。當你做減法時,你會做(數字A +數字B) - 數字B.你需要解決這個問題。 – yamafontes

+0

@berdyev如果此答案解決了您的問題,請接受它,因爲您的評論不清楚。 – anatolyg