无法从类中检索值

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 就这么小了。它有效,其他一切也有效。

以上是关于无法从类中检索值的主要内容,如果未能解决你的问题,请参考以下文章

无法从类内部调用 ExtJS 类中的方法

Python Scrapy 无法从类中提取文本

机器人框架:无法使用 __eq__ 方法从类中获取关键字

从类中调用父方法

从类 FirebaseMessageReceiver 传入 Intent 的对象无法在 Activity 中获取

如何从类中为 EnvironmentObject 设置值?