Rookie C++ Programmer здесь сноваМногомерный массив объекта в 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.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()
{
}
новая плитка :: Плитка (10,10) -> новая плитка (10,10); – DumbCoder
Не могли бы вы показать нам конструктор 'Tile'? – Default
Ваш код 'Grid :: Initialize' пропускает восемь объектов' Tile': 'grid_ptr [i] [0]' дважды получает новый объект. Просто удалите строку 'Grid :: grid_ptr [i] [0] = new Tile :: Tile (10,10);', чтобы исправить это. –