新手C++程序員再次在這裏C++中對象的多維數組,我無法初始化它!
我正在使用VC++ VS2008並嘗試創建一個數組數組。我希望存儲的所有對象都想放在堆上。
在數組中它只是指針。
下面是一些代碼:
Grid.h
#include "Tile.h"
class Grid
{
public:
Tile* grid_ptr[8][8];
...
...
};
Grid.cpp
#include "stdafx.h"
#include "Grid.h"
...
...
void Grid::Initialize()
{
for(int i = 0; i < 8; i++)
{
Grid::grid_ptr[i][0] = new Tile::Tile(10,10);
for (int j = 0; j < 8; j++)
{
Grid::grid_ptr[i][j] = new Tile::Tile(10,10);
}
}
}
...
...
}
一切工作就好了,包括瓷磚施工。這似乎是看到了語法錯誤,因爲編譯器給了我這個
錯誤1錯誤C2061:語法錯誤:標識符「{構造函數}」
錯誤2錯誤C2061:語法錯誤:標識符「{構造函數}」
所有的時間都是同一個故事。這讓我的整個工作陷入了不幸的停頓狀態,我會非常欣賞這個解決方案。
總之。如何正確地創建一個大小爲8x8的數組,數組的大小充滿指向各自tile對象的指針?
這樣做甚至可能或聰明地使用這樣的內存?
介意我已經閱讀了很多這方面的例子,並且用整數或其他數據類型這樣做是成功的。這不過只是不希望我想分配
Tile.h這裏和Tile.cpp下面
class Tile
{
public:
private:
enum TileOccupation
{
EmptyTile = 0,
WhiteSphere = 1,
BlackSphere = 2
};
unsigned short horizontalDimensions;
unsigned short verticalDimensions;
public:
Tile();
Tile(unsigned short horizontalDimensions, unsigned short verticalDimensions);
~Tile();
void Update();
void Draw();
};
> Tile.cpp
#include "stdafx.h"
#include "Tile.h"
Tile::Tile()
{
}
Tile::Tile(unsigned short horizontalDimensions, unsigned short verticalDimensions)
{
}
void Tile::Update()
{
}
void Tile::Draw()
{
}
new Tile :: Tile(10,10) - > new Tile(10,10); – DumbCoder 2010-08-25 11:37:24
你能告訴我們'Tile'構造函數嗎? – Default 2010-08-25 11:38:17
你的'Grid :: Initialize'代碼泄漏了8個'Tile'對象,因爲它是:'grid_ptr [i] [0]'獲得一個新對象兩次。只需要移除'Grid :: grid_ptr [i] [0] = new Tile :: Tile(10,10)''來解決這個問題。 – 2010-08-25 11:47:46