我有一个zybooks部分,其中的一项挑战正在杀死我。我可以更改的以下唯一代码是createlicenseNum函数。
#include <iostream>
using namespace std;
class DogLicense{
public:
void SetYear(int yearRegistered);
void CreateLicenseNum(int customID);
int GetLicenseNum() const;
private:
int licenseYear;
int licenseNum;
};
void DogLicense::SetYear(int yearRegistered) {
licenseYear = yearRegistered;
}
// FIXME: Write CreateLicenseNum()
void DogLicense::CreateLicenseNum(int customID) {
int licenseNum;
int licenseYear;
licenseNum = 0;
licenseNum = (100000 * customID) + licenseYear;
}
int DogLicense::GetLicenseNum() const {
return licenseNum;
}
int main() {
DogLicense dog1;
dog1.SetYear(2014);
dog1.CreateLicenseNum(777);
cout << "Dog license: " << dog1.GetLicenseNum() << endl;
return 0;
}
问题是,当运行GetLicenseNum()时输出为0。我尝试将一个cout添加到createlicenseNum函数中,以查看运行时licenseNum等于什么,但我得到一个非零数字,但这是不正确的。我认为我知道问题出在变量的传递上,但是我不知道如何解决它。
最佳答案
改成这个
void DogLicense::CreateLicenseNum(int customID) {
licenseNum = (100000 * customID) + licenseYear;
}
您正在现有的
CreateLicenseNum
中创建阴影变量。这意味着licenseNum
和licenseYear
在本地范围内为CreateLicenseNum
。本地licenseNum
和licenseYear
未初始化为特定值,因此licenseYear
可以是任何值。