类函数找不到类定义的变量



"block.h">

enum BlockType
{
    BlockType_Default = 0,
    BlockType_Grass,
};
class Block
{
public:
    Block();
    ~Block();
    bool IsActive();
    void SetActive(bool activeParameter);
private:
    bool active;
    BlockType m_blockType;
};

"block.cpp">

#include "block.h"
Block::Block()
{
    m_blockType = BlockType_Grass;
    active = true;
}
Block::~Block()
{
}
bool Block::IsActive()
{
     return active;
}
void Block::SetActive(bool activeParameter)
{
    active = activeParameter;
}

这是我的课。现在我的问题是,当我运行程序并调用IsActive();函数时,我在检查active是否为真的行上得到一个错误EXC_BAD_ACCESS (code=1, address = 0x0)。根据我所读到的内容,如果变量不存在,将返回什么。我的代码出了什么问题?

这是我调用函数的地方main.cpp

Block* m_pBlocks[32][32][32];
void main()
{
    for(int x = 0; x < 32; x++)
    {
        for(int y = 0; y < 32; y++)
        {
            for(int z = 0; z < 32; z++)
            {
                printf("x:%d y:%d z:%d",x,y,z);
                if(m_pBlocks[x][y][z]->IsActive())
                {
                    //DisplayBlock
                }
            }
        }
    }

}

此语句

Block* m_pBlocks[32][32][32];

定义了32 x 32 x 32个NULL指针。因此,当您在这些NULL指针上尝试->时,它会失败。

您要么需要创建块,要么分配它们:

Block m_pBlocks[32][32][32];
Block* m_pBlocks[32][32][32];
m_pBlocks[x][y][z] = new Block;

最新更新