所以我遇到了这个奇怪的问题,我有一个对象,它有一个指向另一个对象的指针,而我想访问该对象的一个变量。我可以在构造函数中执行此操作,但当我在函数中时它不起作用。
编辑:
在我初始化它们之后, block 的变量“状态”似乎发生了变化。一开始输出0x3015a8,然后变成0x110000
Edit2:所以我做了一个编译的小例子,但它给了我一个访问冲突返回码。我显然用指针做了一些错误的事情,但我无法找出什么...我来自 Java,所以这可能是一个原因。
最佳答案
你的示例程序有很多问题:
在
Foo::Foo
的定义中,您有这个表达式:bar->var
。此时在您的程序中,键入Bar
是不完整的。您不能取消引用指向不完整类型的指针。您声明了两个具有相似名称的类型:首先是
::Foo::Bar
,然后是::Bar
。我怀疑你的意思是让他们成为同一类型。他们不是。在您的主要代码片段中,您有这个表达式:
new Foo(new Bar());
。这不会编译,因为Foo
没有采用Bar*
的构造函数。 (它确实有一个采用Foo::Bar*
的构造函数,但那是另一回事。)
注意:您现在已经发布了一些其他程序的片段。我上面列出的问题都没有出现在这个其他程序中。
在你的pastebin entry ,你永远不会初始化
StateGame::blockArray
。您在 stateGame::setBlock
中取消引用它。这会导致未定义的行为。
关于C++变量可以在构造函数中访问,但不能在函数中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811926/