Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 变量不是通过引用传递的_C++ - Fatal编程技术网

C++ 变量不是通过引用传递的

C++ 变量不是通过引用传递的,c++,C++,我已经正确编译并运行了我的程序,但似乎变量sum没有通过引用传递,它仍然得到了0。这里的任何帮助都是代码 #include "VendingMachine.h" int VendingMachine::MakeSelection(int ItemPrice[], int NumItems[],int &sum){ int total_cost = 0; cout << "Enter your choice: "; cin >> cho

我已经正确编译并运行了我的程序,但似乎变量sum没有通过引用传递,它仍然得到了0。这里的任何帮助都是代码

#include "VendingMachine.h"

int VendingMachine::MakeSelection(int ItemPrice[], int NumItems[],int &sum){

    int total_cost = 0;

    cout << "Enter your choice: ";
    cin >> choice;

    if(choice >= 1 && choice <= 9){
        while (choice != 0){
            NumItems[(choice-1) % 10]--;
            total_cost += ItemPrice[(choice-1)%10];
            choice/=10;

        }
    }
        sum = total_cost;
        return sum;
}
Main.cpp

#include "VendingMachine.h"

int main()
{
    int Denominations = 5;

    int Coins[] = {100, 50, 20, 10, 5};
    int NumCoins[] = {10, 10, 10, 10, 10}; //assume we have 10 coins of each denomination

    const int Items = 9;
    int sum, deposit;

    int ItemPrice[ ] = { 75, 120, 120, 100, 150, 95, 110, 50, 120 }; //price in cents
    int  NumItems[ ] = { 10, 10, 10, 10, 10, 10, 10, 10, 10 }; 

    VendingMachine caller;

    caller.ShowMenu();
    cout << endl;

    cout << "Enter your money: ";
    cin >> deposit;

    caller.MakeSelection(ItemPrice,NumItems,sum);
    cout <<"The total cost is " << sum << endl;

    system("PAUSE");
    return 0;
}
自动售货机

#include <iostream>
#include <cmath>
#include <string>

using namespace std;

int total_cost;
int Coins[5];
int NumCoins[5];
int ItemPrice[9];
int NumItems[9];

class VendingMachine{
public:
    int MakeSelection(int ItemPrice[], int NumItems[],int &sum);
    void ReturnChange(int& input,int& sum, int Coins[],int NumCoins[]);
    void ShowMenu();
    void DisplayErrorMessage(int error);
    void PrintConfidentialInformation(int Denominations, int Items, int Coins[], int NumCoins[], int ItemPrice[] , int NumItems[]);
private:
    int choice;
    string Password;
    int deposit2;
};

总成本应该在MakeSelection cpp中返回一个sum值,但它仍然返回一个0..

MakeSelection根本不使用变量sum。

您从未实际使用sum,因此该值为0

您的sum变量未被使用,并且您的MakeSelection调用未返回任何值。

sum未被使用。有一个警告,函数没有返回值,所以你得到了未定义的行为。你应该在你的编译器中启用一些标志…嘿,伙计们,为我上面的代码不完整道歉,我刚刚编辑了它,添加了两行使用变量和的代码,这就是我不明白为什么它返回0的地方…有任何帮助吗。。!!选择的重点是什么/=10;如果此时选择不能超过9,则为%10?