C++ 类变量未打印分配的正确值
C++ Class variables not printing the right values assigned
我正在尝试创建一个名为"Game"的简单类,并为所有三个变量分配一些值。但是,每次我运行它时,屏幕上打印的值都是完全无关紧要的,我很确定它必须与类构造函数做一些事情,但我不知道到底是什么。代码是这样的:
#include <iostream>
#include <string>
using namespace std;
class Game
{
int id;
string name;
string winner;
public:
Game();
Game(int IDvalue, string NAMEvalue );
~Game();
void setId(int IDvalue);
void setName(string NAMEvalue);
void setWinner(string WINNERvalue);
int getId();
string getName();
string getWinner();
void status1();
};
Game::Game()
{
id = 0;
name = " ";
winner = " ";
}
Game::Game(int IDvalue, string NAMEvalue)
{
IDvalue = id;
NAMEvalue = name;
winner = " ";
}
Game::~Game()
{
}
void Game::setId(int IDvalue)
{
IDvalue = id;
}
void Game::setName(string NAMEvalue)
{
NAMEvalue = name;
}
void Game::setWinner(string WINNERvalue)
{
WINNERvalue = winner;
}
int Game::getId()
{
return id;
}
string Game::getName()
{
return name;
}
string Game::getWinner()
{
return winner;
}
void Game::status1()
{
cout << "Game's id : " << id << endl;
cout << "Game's type : " << name << endl;
cout << "Game's winner : " << winner << endl;
}
int main()
{
Game a(1, "Something");
a.setWinner("Someone");
a.status1();
return 0;
}
正如你可能已经注意到的(我相信你有)我对C++很陌生,所以对我放轻松......
Game::Game(int IDvalue, string NAMEvalue)
{
IDvalue = id;
NAMEvalue = name;
winner = " ";
}
这些作业中的大多数都是反向的。为了保持一致,最后一行应该是
" " = winner;
这个构造函数没有初始化id
和name
;相反,它将id
和name
的(垃圾)值分配给参数IDvalue
和NAMEvalue
,它们是函数中的局部变量,所以当构造函数返回时它们会被销毁,没有人可以看到它们的修改值。
修复:
Game::Game(int IDvalue, string NAMEvalue)
{
id = IDvalue;
name = NAMEvalue;
winner = " ";
}
或更好:
Game::Game(int IDvalue, string NAMEvalue)
: id(IDvalue)
, name(NAMEvalue)
, winner(" ")
{
}
顺便说一下,你的二传手函数也有同样的问题。
您将成员变量分配给参数,反之亦然,在第二个构造函数和set
函数上。
Game::Game(int IDvalue, string NAMEvalue)
{
IDvalue = id; --> id = IDvalue; OR setID(id);
NAMEvalue = name; --> name = NAMEvalue; OR setName(name);
winner = " ";
}
void Game::setId(int IDvalue)
{
IDvalue = id; --> id = IDvalue;
}
// ... the rest of the set functions
相关文章:
- 将数组的地址分配给变量并删除
- 查找后更改类变量
- 如何避免在仅标头库中C++类/变量重定义
- c++ 在非类函数中使用类变量
- 动态分配Q_Property变量
- 基于模板的类变量
- 分段 访问私有类变量时出错
- 为什么从另一个构造函数内部调用C++构造函数不修改类变量?
- 如何添加循环期间分配的变量?
- 如何访问基类向量中的子类变量?(对于实体组件系统)
- 如何在构造函数中访问类变量以分配它们,而无需在C++中使用此指针
- 将来自类的特定实例的函数分配给变量以保持状态
- C++ 类变量未打印分配的正确值
- 分配类成员变量时C++分段错误
- 将指针作为参数分配给类变量,然后使用它抛出读取访问违规
- 无法在重载运算符时将数组元素分配给类变量"="
- 从私有类变量中取消分配内存
- 类变量的多维数组分配
- 为什么不能将静态类变量分配给堆栈
- 通过构造函数调用中的命名参数分配类变量 C++.