新手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