从另一个类访问双指针

时间:2016-02-21 13:56:51

标签: c++ class pointers

我想访问位于另一个类“Board”中的双指针。

class Board
{
public:
    Board(void);
    Board(unsigned int xSize, unsigned int ySize);
    ~Board(void);

    void SetObjectManager(ObjectManager* pObm);
    void SetBlock(Block* block);

    void LoadBoard(void);
    void InitBoard(void);
   //Other Functions...

private:
    ObjectManager* m_obm;
    Block* m_block;

    //pointer to pointer to a int. (for 2 dimensional-array)
    int **m_board;
};

首先是董事会成员。在课程的最后一行,你可以看到m_board。 我想在这个类的外面改变这个值。

像这样,

void Block::InitBlock(void)
{   
    int randPiece = Random::GIRand().RandInt(0, 1);
    int randPos   = Random::GIRand().RandInt(0, 10);

    switch (randPiece)
    {
    case 0:
        m_piece[2][1] = 1;
        m_piece[2][2] = 1;
        m_piece[2][3] = 1;
        m_piece[3][3] = 1;
        break;
    //Other cases are here...
    }

    std::cout << "RandPos : " << randPos << std::endl;
    std::cout << "RandPiece : " << randPiece << std::endl;

    for (int y = 0; y < m_ySize; ++y)
    {
        for (int x = 0, pX = randPos; x < m_xSize; ++x, ++randPos)
        {
            if (m_piece[x][y] != 0)
                m_board->SetBoardStatus(randPos, y, 1);
        }
    }
}

但是,当我运行这个程序时,它会在SetBoardStatus(int,int,int)中爆炸

SetBoardStatus看起来像这样,

void Board::SetBoardStatus(int x, int y, int value)
{
    m_board[x][y] = value; //Visual Studio breaks the program here.
}

我正确分配双指针。 我把董事会放在这个班级的外面。

void Block::SetBoard(Board* board)
{
    m_board = board;
}

这是我的街区类。

class Block
{
public:
    Block(void);
    ~Block(void);

    void SetObjectManager(ObjectManager* pObm);

    void LoadBlock     (void);
    void InitBlock     (void);
    void UpdateBlock   (void);
    void ReleaseBlock  (void);

    void SetBoard(Board* board);

private:
    ObjectManager* m_obm;
    Board* m_board;

    int **m_piece;

    int m_xSize;
    int m_ySize;

};

1 个答案:

答案 0 :(得分:1)

考虑继承Block in Board;这将消除任何可能的解引用错误或错误,因为您可以立即访问指针。

相关问题