无法从类中检索值
Posted
技术标签:
【中文标题】无法从类中检索值【英文标题】:Unable to retrieve values from Class 【发布时间】:2020-06-05 18:26:19 【问题描述】:好的,所以我们现在正在学校学习类和构造函数。我觉得这应该可以工作,因为它几乎就像使用 struct 一样,但这有点让我恼火,因为我的代码中没有错误。在使用 public 几种方法获取它们的私有值后,我无法从另一个类中检索私有值。
输出:
Input the maximum # of cards for the Baseball card Box: 4
Max count of cards: 7
Current count is: 0
Spaces left: 7
Max count of cards: 7
Current count is: 1
Spaces left: 6
Max count of cards: 7
Current count is: 2
Spaces left: 5
Max count of cards: 7
Current count is: 3
Spaces left: 4
Max count of cards: 7
Current count is: 4
Spaces left: 3
Max count of cards: 7
Current count is: 5
Spaces left: 2
Max count of cards: 7
Current count is: 6
Spaces left: 1
【问题讨论】:
你永远不会初始化currentCardCount
,所以当你访问它时你就有了UB(就像你在很多地方所做的那样)。
“我无法从另一个类中检索私有值,在使用公共的几种方法获取它们的私有值之后。” 什么?在我看来,这正是你正在做的事情。
两者都在类之间初始化,但是如果用户指定最大计数而不是默认的 7,它不会循环说,用户最大计数为 4。所以即使用户输入最大值为 4,则 for 循环默认为 7,并显示 7 个输出结果/
3 次调用 BaseballCardBox 的构造函数不会在早期对象中设置值? box不是用输入值构造的,也没有setter。
我不确定你在这里问什么。你能说得更具体点吗?
【参考方案1】:
如果要更改类的所有实例的值,则需要将变量 maxCardCount
定义为 static int
。换句话说,如果您更改了变量的值,那么所有已创建的对象实例都会更改该值。
只需执行以下操作:
class BaseballCardBox
private:
static int maxCardCount; // replace to this
.
.
.
;
int BaseballCardBox::maxCardCount; // and this
你会得到如下输出:
Input the maximum # of cards for the Baseball card Box: 3
Max count of cards: 3
Current count is: 0
Spaces left: 3
Max count of cards: 3
Current count is: 1
Spaces left: 2
Max count of cards: 3
Current count is: 2
Spaces left: 1
【讨论】:
哇,将静态添加到 int 就这么小了。它有效,其他一切也有效。以上是关于无法从类中检索值的主要内容,如果未能解决你的问题,请参考以下文章