Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

[C++] Problem z Tablicą o zmiennej wielkości


Rekomendowane odpowiedzi

Opublikowano

Mam taki mały problem. Chce zrobić grę 2D, ale pomyślałem że zanim się za to wezmę to najpierw zrobię edytor map, i teraz chce dodać możliwość zmieniania wielkości mapy.

Zrobiłem sobie klasę Map, ale nie umiem korzystać z operatora new (pierwszy raz tego używam) więc zrobiłem masę błędów których nie wiem jak naprawić. Czy ktoś kto ogarnia operator new mógłby mi pomóc naprawić te błędy?

 

Oto kod klasy Map:

 

class Map
{
public:
 int Width;
 int Height;
 Block *Blocks;
 Map(int NWidth = 40, int NHeight = 20);
 ~Map();
 void ReSize(int NWidth, int NHeight);
};

Map::Map(int NWidth, int NHeight)
{
Width = NWidth;
Height = NHeight;
*Blocks = new Block[5][NWidth][NHeight];
}
Map::~Map()
{
delete []Blocks;
}
void Map::ReSize(int NWidth, int NHeight)
{
Block *Temp = new Block[5][NWidth][NHeight];
for(int i = 0; (i < NWidth) && (i < Width); i++)
{
 for(int j = 0; (j < NHeight) && (j < Height); j++)
 {
	 Temp[0][i][j] = Blocks[0][i][j];
	 Temp[1][i][j] = Blocks[1][i][j];
	 Temp[2][i][j] = Blocks[2][i][j];
	 Temp[3][i][j] = Blocks[3][i][j];
	 Temp[4][i][j] = Blocks[4][i][j];
 }
}
delete []Blocks;
Blocks = Temp;
Width = NWidth;
Height = NHeight;
}

 

Lista błędów:

 

D:\Program Files\Work\MapEditor\Map.hpp||In constructor 'Map::Map(int, int)':|
D:\Program Files\Work\MapEditor\Map.hpp|18|error: 'NWidth' cannot appear in a constant-expression|
D:\Program Files\Work\MapEditor\Map.hpp|18|error: 'NHeight' cannot appear in a constant-expression|
D:\Program Files\Work\MapEditor\Map.hpp||In member function 'void Map::ReSize(int, int)':|
D:\Program Files\Work\MapEditor\Map.hpp|28|error: 'NWidth' cannot appear in a constant-expression|
D:\Program Files\Work\MapEditor\Map.hpp|28|error: 'NHeight' cannot appear in a constant-expression|
D:\Program Files\Work\MapEditor\Map.hpp|34|error: no match for 'operator[]' in '* Temp[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|34|error: no match for 'operator[]' in '*((Map*)this)->Map::Blocks[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|35|error: no match for 'operator[]' in '*(Temp + 220u)[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|35|error: no match for 'operator[]' in '*(((Map*)this)->Map::Blocks + 220u)[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|36|error: no match for 'operator[]' in '*(Temp + 440u)[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|36|error: no match for 'operator[]' in '*(((Map*)this)->Map::Blocks + 440u)[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|37|error: no match for 'operator[]' in '*(Temp + 660u)[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|37|error: no match for 'operator[]' in '*(((Map*)this)->Map::Blocks + 660u)[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|38|error: no match for 'operator[]' in '*(Temp + 880u)[i]'|
D:\Program Files\Work\MapEditor\Map.hpp|38|error: no match for 'operator[]' in '*(((Map*)this)->Map::Blocks + 880u)[i]'|
D:\Program Files\Work\MapEditor\DrawCoppy.cpp||In function 'void DrawCoppy()':|
D:\Program Files\Work\MapEditor\DrawCoppy.cpp|36|error: expected unqualified-id before '.' token|
||=== Build finished: 15 errors, 0 warnings ===|

Opublikowano

Bierzesz się za programowanie gier/programów a nie znasz podstawy ?

Jaki problem poczytać o tym na internecie ? Na necie jest wyjaśnione a Ty jak widać nawet tego nie przeczytałeś, bo napisałeś takie bzdury że aż koli

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...