# Multi-dimensional array of struct problem.

• October 28th, 2010, 10:25 AM
Klashnikov Kid
Multi-dimensional array of struct problem.
Hey guys, I'm having a problem with a 2 dimensional array of structs. Whenever I assign a value to one particular struct it appears that it contaminates that value for every other struct on that row.

Here are the relevant lines of code.
Code:

```struct Cell {         D3DXVECTOR2 position;         bool isSouthOpen,                 isEastOpen,                 isNorthOpen,                 isWestOpen,                 isActive; }; ... Cell* cells; ... cells = new Cell[cellColumnSize, cellRowSize]; for (int i = 0; i < cellColumnSize; ++i)         for (int j = 0; j < cellRowSize; ++j)         {                 cells[i,j].position = D3DXVECTOR2(i, j);                 cells[i,j].isSouthOpen = false;                 cells[i,j].isWestOpen = false;                 cells[i,j].isNorthOpen = false;                 cells[i,j].isEastOpen = false;                 cells[i,j].isActive = false;         } ... startCell = D3DXVECTOR2(0, 0); cellPointer = startCell; cells[(UINT) cellPointer.x, (UINT) cellPointer.y].isActive = true; // Sets the entire row to active for some reason.```
It's for a little game that procedurally generates a random maze. I've only got it rendering active cells so the output and watching the pointer's referenced values verifies that an entire row gets contaminated.

I've never seen behavior like this so I imagine it might be due to some c++ behavior that I'm unaware of. Haven't been using c++ for very long.

Thanks!
• October 28th, 2010, 10:41 AM
MrViggy
Re: Multi-dimensional array of struct problem.
This does not give you a two dimensional array:
Code:

`cells = new Cell[cellColumnSize, cellRowSize];`
You either need to make cells a pointer to a pointer of Cell, or, just use a vector of vectors:
Code:

`std::vector<std::vector<Cell> > cells;`
Viggy
• October 28th, 2010, 10:43 AM
Klashnikov Kid
Re: Multi-dimensional array of struct problem.
DOH!

There goes my C# syntax habits kicking in.

Thanks!!