ОБНОВЛЕНИЕ: Большая часть моего соответствующего исходного кода находится в этом виде: http://pastebin.com/nhAx1jfG
Может кто-нибудь понять смысл этой ошибки?Я пытаюсь получить доступ к двумерному массиву "Tile", который я объявляю в другом классе в том же пространстве имен, он общедоступен, и я объявляю объект в основном классе "rouge.cpp".
g++ -Wall -Werror -lncurses -c rouge.cpp -o rouge.o
rouge.cpp: In function ‘void update_game(Player, Map, World, bool)’:
rouge.cpp:497: error: no match for ‘operator[]’ in ‘*(world.World::tiles + ((((unsigned int)player.Player::<anonymous>.GameObject::x) + 0xffffffffffffffffffffffffffffffffu) * 16u))[player.Player::<anonymous>.GameObject::y]’
rouge.cpp:506: error: no match for ‘operator[]’ in ‘*(world.World::tiles + ((((unsigned int)player.Player::<anonymous>.GameObject::x) + 1u) * 16u))[player.Player::<anonymous>.GameObject::y]’
rouge.cpp:515: error: no match for ‘operator[]’ in ‘*(world.World::tiles + ((unsigned int)(((unsigned int)player.Player::<anonymous>.GameObject::x) * 16u)))[(player.Player::<anonymous>.GameObject::y + -0x00000000000000001)]’
rouge.cpp:524: error: no match for ‘operator[]’ in ‘*(world.World::tiles + ((unsigned int)(((unsigned int)player.Player::<anonymous>.GameObject::x) * 16u)))[(player.Player::<anonymous>.GameObject::y + 1)]’
rouge.cpp:540: error: no match for ‘operator[]’ in ‘*(world.World::tiles + ((unsigned int)(((unsigned int)player.Player::<anonymous>.GameObject::x) * 16u)))[player.Player::<anonymous>.GameObject::y]’
make: *** [rouge.o] Error 1
world.h:
// The "world" class, generates a world.
class World
{
// Public classes and variables
public:
// Tile array
Tile* tiles;
int plates[WORLDSIZEX][WORLDSIZEY];
//Tile tiles[WORLDSIZEX][WORLDSIZEY];
//Tile (*tiles)[WORLDSIZEX] = new Tile[WORLDSIZEX][WORLDSIZEY];
// For plates
//int plates[WORLDSIZEX][WORLDSIZEY];
//plates = new int[WORLDSIZEX][WORLDSIZEY];
//int (*plates)[WORLDSIZEX] = new int[WORLDSIZEX][WORLDSIZEY];
// Small world
Tile smalltiles[SMALLWORLDX][SMALLWORLDY];
// For world temp
int worldtemp;
// Constructor
World();
void generate_plates();
bool check_plates();
int build_mountains(int,int);
void add_mountains();
void generate_world();
void shrink_world();
void save_world();
void erupt();
bool get_passable(int,int);
char get_icon(int,int);
char get_small_icon(int,int);
int get_color(int,int);
int get_small_color(int,int);
};
world.cpp, где я размещаю массив:
// Constructor
World::World()
{
// Seed for random number
srand( time(NULL) );
tiles = new Tile[WORLDSIZEX][WORLDSIZEY];
// Generate a world
generate_world();
// Shrink world
shrink_world();
// Then save it.
//save_world();
}
в rouge.cpp, я обращаюсь к нему так же, как:
world.tiles[i][j]; //i and j are ints in a nested for loop
после того, как я объявил это как:
World world;
и он выплевывает эту ошибку