Archived

This topic is now archived and is closed to further replies.

Trajar

I keep staring, but it doesn't fix itself

Recommended Posts

Ok.. this may sound really easy, but I''ve stared at this for a long time (and you know what that does - nothing) So tell me what I''m doing wrong. I declare a ptr as TileClass * Map; in the include file. Later, I want to create a multi-dem. array out of it, so I do this Map = new TileClass[30][30]; for( i=0; i<=29; i++) { for( j=0; j<=29; j++ ) { TileClass * tempTile = new TileClass; tempTile->Init(1,0); Map[j] = tempTile; delete tempTile; } } And I get the error cannot convert from ''class TileClass (*)[30]'' to ''class TileClass * I know it something simple, yet staring doesn''t help...

Share this post


Link to post
Share on other sites
The problem is that when you declare TileClass *Map; , you''re only creating ONE pointer, yet in your loop, you''re telling the compiler that *Map is an array. C++ don''t like that.
Solution : make it an array ''o pointers:

TileClass *Map[30];

Share this post


Link to post
Share on other sites
if I do understand you, you want to have 30x30 array of pointers pointing to TileClass objects.

but when you allocate new Tile (tempTile = new ...),
and you store the pointer to the array,
you immediatly delete the Tile (with delete tempTile),
so at the end you will get pointers pointing to nowhere
(i.e. to deleted objects) ...

that''s the second thing you are doing wrong.

---------------------------------------------------
Ped - Peter Helcmanovsky - 7 Gods demo group
http://7gods.rulez.sk
First Sight Entertainment - http://members.xoom.com/fseteam
---------------------------------------------------

Share this post


Link to post
Share on other sites
TileClass **Map;

Map = new TileClass *[30];
for( i=0; i<=29; i++)
{
Map = new TileClass[30];
Map[i]->Init(1,0);
delete []Map[i];
}

delete []Map;


That will initialize all the map, and then delete it. Basically, I don''t know why you would want to delete it at the same time as initializing it, but that''s what you were doing. That should work just fine, and you can access it like a two dimensional array.

Pythius

Share this post


Link to post
Share on other sites
Um. Just a guess, here. Is the error coming from the line:
Map[j]=tempTile;
?

If if is, then your problem is that you are trying to assign a single tile to a whole array of tiles. You should probably use:
Map [ i ][ j ]=tempTile;

Making friends one burger at a time.

Edited by - MartinJ on 4/11/00 3:03:55 PM

Edited by - MartinJ on 4/11/00 3:06:51 PM

Share this post


Link to post
Share on other sites