Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/135.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 布尔值被初始化为true,即使构造函数被传递为false_C++_Model View Controller_Oop - Fatal编程技术网

C++ 布尔值被初始化为true,即使构造函数被传递为false

C++ 布尔值被初始化为true,即使构造函数被传递为false,c++,model-view-controller,oop,C++,Model View Controller,Oop,我的代码有一个有趣的问题。。。正在调试模式(Eclipse/CDT)下运行。。。我所有的瓷砖似乎都已将墙布尔值设置为真?有人知道wtf正在进行吗 代码,完全MVC和几乎正确的OO(我认为),如下所示: main.cpp gridworld.h gridworld.cpp 我怀疑这与这里的片段有关: Tile::Tile(bool w) { wall = w; event = false; eventText = ""; } 以及我如何使用它生成地

我的代码有一个有趣的问题。。。正在调试模式(Eclipse/CDT)下运行。。。我所有的瓷砖似乎都已将墙布尔值设置为真?有人知道wtf正在进行吗

代码,完全MVC和几乎正确的OO(我认为),如下所示:

main.cpp

gridworld.h

gridworld.cpp

我怀疑这与这里的片段有关:

Tile::Tile(bool w) {
        wall = w;
        event = false;
        eventText = "";
}
以及我如何使用它生成地图:

map[1][2] = new Tile(false);

您在许多地方使用的是
new Tile()。在
Tile
的默认ctor内,您正在初始化
wall=true

首先是
平铺图[8][8],将构造默认的平铺。将bool
wall
设置为true

在映射构造函数中,您使用的是
Map::Map[r][c]=new Tile()
右侧是
Tile*
,左侧是
Tile

分配给map的正确语法是
map[r][c]=Tile(),或
映射[6][4]=平铺(假)

我怀疑是否有人会从垃圾桶里挖出来帮助你。就这个问题做一个独立的小例子,并在这里发布。你特别希望哪一个图块是假的?另外,不要忘记清理所有新Tile()语句的内存。@xdhmoore第68行到第95行声明的所有Tile。它们都使用非默认构造函数?为什么你不能在它上面运行一个调试器,而断点在它上面呢?甚至打印报表?你很容易就会发现我找不到任何东西。您的调试器是否可能没有在最新版本的代码上运行?这是真的,但是对重载平铺(bool w)的所有调用似乎仍然将wall设置为true,在这里它总是作为false传递,如示例中所示。谢谢!我是在一个朋友的帮助下才弄明白的。正是我学到的!谢谢。它将编译:指针被转换为
bool
,然后通过转换构造函数转换为
Tile
。因此,分配的磁贴被悄悄泄漏并忽略,而数组中的磁贴被初始化为
true
。通过使转换构造函数显式:
explicit-Map(bool-w)