我正在尝试访问我在嵌套类中声明的变量,但是我无法在控制台上得到我想要的答案。我想要的结果是100,但我得到的只是一个很长的数字。我似乎无法找到错误。这就是我写的:
link.rel='rel';
答案 0 :(得分:4)
你的结果并不令人惊讶。你似乎在想
shpia::dhoma1 k;
k.gjatesi=10;
将为您要创建的所有dhoma1
个对象定义shpia
。这是错的。您刚刚定义了一个与shpia::dhoma1
个对象无关的shpia
对象。
然后定义
shpia r;
这将在r
另一个dhoma1
创建,与第一个无关,但未初始化。因此,当你打印广场时,你感觉没有意义。
答案 1 :(得分:1)
您正在访问未初始化的内存。 在这里,您可以创建嵌套类的实例,并初始化其成员:
shpia::dhoma1 k;
k.gjatesi=10;
在这里,您创建了一个主类的实例,它与k
无关。它已经定义了一个嵌套的类成员变量(r.dh1)
shpia r;
r.redi();
return 0;
由于这个新声明,嵌套类r
没有定义的值,当你调用redi()
时,你将访问未定义的内存,因此得到一些随机数。根据应用程序的实际运行时布局,此值可能会更改。它是未定义的,您必须在使用它之前定义它。
要解决此问题,您应该使用主类的嵌套类成员,如下所示:
shpia r;
r.dh1.gjatesi = 10;
r.redi();
return 0;