问题描述
我有 3 个文件 main.cpp、Student.cpp 和 Student.h 代码如下:
main.cpp
#include<iostream>
#include "Student.h"
using namespace std;
int main()
{
Student obj;
obj.setName("My name is Uzair Khan. \n");
cout << obj.getName();
obj.setRollNumber(201);
cout << obj.getRollNumber();
}
Student.cpp
#include "Student.h"
void Student::setName(string x)
{
name = x;
}
string Student::getName()
{
return name;
}
int Student::setRollNumber(int rollNumber)
{
int RollNum = rollNumber;
return RollNum;
}
int Student::getRollNumber()
{
return rollNumber;
}
Student.h
#pragma once
#include <string>
using namespace std;
class Student
{
public:
void setName(string x);
string getName();
int setRollNumber(int rollNumber);
int getRollNumber();
private:
string name;
int rollNumber;
};
输出非常出乎意料。我不知道为什么我不能将卷号作为明确的整数,而不是获得卷号 201。我得到了这样的 -858993460。我不知道为什么。我是 C++ 的新手。如果有人可以帮助/解释,那我们将非常有帮助。 谢谢
(注意:- 我使用的是 Visual Studio 2019 社区版)
输出:
My name is Uzair Khan.
-858993460
解决方法
问题出在 Student::setRollNumber
,你有
int RollNum = rollNumber;
你在这里所做的是声明一个新的局部变量;您想要做的是分配给成员变量 rollNumber
。您应该将参数名称更改为其他名称,然后执行以下操作:
int Student::setRollNumber(int n)
{
rollNumber = n;
return rollNumber;
}