gpt4 book ai didi

c++ - 变量未定义,但在我的构造函数 C++ 中明确定义

转载 作者:行者123 更新时间:2023-11-30 02:50:41 25 4
gpt4 key购买 nike

我有一个 C++ 作业要求我创建一个名为 Tips 的类,它:

  • 有一个成员变量,float taxRate
  • 有两个构造函数,一个将 taxRate 设置为 .65 的默认构造函数,另一个是将 taxRate 设置为任何 float 的单参数构造函数用户输入我的 tipMain.cpp 文件。
  • 只有一个函数,computeTip,它接受两个参数:totBilltipRate,都是 float必须计算税前餐费,并根据该值和所需的小费率返还小费。

当我尝试在 computeTip 函数中使用 taxRate 时,我的问题出现了。

如果我使用 taxRatecomputeTip 不理解 taxRate 的值,声明它是未定义的,即使我指定tips::taxRate,在我编译 Visual Studio 状态之前

Error: a nonstatic member reference must be relative to a specific object.

我模糊地理解这个错误,但即使我在我的 .h 文件中声明 taxRate 是静态的,我也会收到 LNK2019 错误。

提示.cpp

#include <iostream>
#include <float.h>
#include "Tips.h"

using namespace std;

Tips::Tips()
{
taxRate = 0.65;
}

Tips::Tips(float a)
{
taxRate = a;
}

float computeTip(float totBill, float tipRate)
{
float mealOnly = 0;
mealOnly = (totBill/taxRate); //written both ways to show errors. taxRate undefined here.
mealOnly = (totBill/Tips::taxRate); //Error: a nonstatic member reference must be relative to a specific object
return (mealOnly * tipRate);

}

提示.h

#ifndef Tips_H
#define Tips_H
#include <float.h>

using namespace std;

class Tips
{
public:
Tips();
Tips(float);
float computeTip(float, float, float);
float taxRate;
};
#endif

和我的 tipMain.cpp

#include "Tips.h"
#include <iostream>
#include <iomanip>


using namespace std;

float tax;
float meal;
float tip;
void tipProcessor();

int main()
{
char entry;
int toggle = 1;
cout << "Welcome to the Gratuity Calculator!" << endl;
cout << endl;
while (toggle != 0)
{
cout << "Enter 1 to calculate tip." << endl;
cout << endl;
cout << "Enter 2 to exit." << endl;
cout << endl;
cout << "Entry: ";
cin >> entry;
switch (entry)
{
case '1':
tipProcessor();
break;
case '2':
toggle = 0;
break;
default:
cout << "Enter 1 or 2." << endl;
cout << endl;
break;
}
}
system("pause");
return 0;
}
void tipProcessor()
{
cout << "Enter bill total: ";
cin >> meal;
cout << endl;
cout << "Enter tax rate: ";
cin >> tax;
cout << endl;
Tips thisTip(tax);
cout << "Enter tip percent: ";
cin >> tip;
cout << endl;
cout << "Tip is $" << setprecision(4) << thisTip.computeTip(meal, tip, thisTip.taxRate) << "." << endl;
cout << endl;
}

最佳答案

你用

float computeTip(float totBill, float tipRate)

但应该是:

float Tips::computeTip(float totBill, float tipRate)

在实现中。你也应该隐藏你的数据成员。

关于c++ - 变量未定义,但在我的构造函数 C++ 中明确定义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20247902/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com