C++变量可以在构造函数中访问,但不能在函数中访问

标签 c++ function variables constructor

所以我遇到了这个奇怪的问题,我有一个对象,它有一个指向另一个对象的指针,而我想访问该对象的一个​​变量。我可以在构造函数中执行此操作,但当我在函数中时它不起作用。

http://pastebin.com/2FHd7ak0

编辑:
在我初始化它们之后, block 的变量“状态”似乎发生了变化。一开始输出0x3015a8,然后变成0x110000

Edit2:所以我做了一个编译的小例子,但它给了我一个访问冲突返回码。我显然用指针做了一些错误的事情,但我无法找出什么...我来自 Java,所以这可能是一个原因。

http://pastebin.com/uF8t8wx9

最佳答案

你的示例程序有很多问题:

  1. Foo::Foo 的定义中,您有这个表达式:bar->var。此时在您的程序中,键入 Bar 是不完整的。您不能取消引用指向不完整类型的指针。

  2. 您声明了两个具有相似名称的类型:首先是 ::Foo::Bar,然后是 ::Bar。我怀疑你的意思是让他们成为同一类型。他们不是。

  3. 在您的主要代码片段中,您有这个表达式:new Foo(new Bar());。这不会编译,因为 Foo 没有采用 Bar* 的构造函数。 (它确实有一个采用 Foo::Bar* 的构造函数,但那是另一回事。)


注意:您现在已经发布了一些其他程序的片段。我上面列出的问题都没有出现在这个其他程序中。


在你的pastebin entry ,你永远不会初始化 StateGame::blockArray。您在 stateGame::setBlock 中取消引用它。这会导致未定义的行为。

关于C++变量可以在构造函数中访问,但不能在函数中访问,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9811926/

相关文章:

c++ - 如何删除 TreeView 中所选项目下的所有项目

javascript - 替换 JavaScript 中的函数

C++ vptr 在每个对象中都是重复的

function - 在谷歌表格中,如何找到非数值数据的众数?

javascript - 如何在 Javascript 函数之间传递变量?

python - 我如何找到当前的分贝级别并将其设置为变量?

python - 第二次调用函数,仅进行微小的更改

c++ - 打印最近的一对点

c++ - C++输出对齐

c++ - std::function:无法将派生类参数转换为基类参数