Mam taki problem, że tworzę aplikację w C# są tam dwie struktury, tak jak poniżej:
public unsafe struct rekord
{
public uint offset;
public uint klucz;
public string wartosc;
public uint numer;
public bool zmodyfikowano;
public bool nieprzebudowano;
public bool zmieniono_klucz;
};
public unsafe struct baza_danych
{
public string nazwa_sekcji;
public bool zmodyfikowano;
public uint offset;
public uint ilosc_rekordow;
public unsafe rekord* dane;
};
Jak widać w strukturze baza_danych będzie powstawać tablica struktur rekord. Z całości jeszcze chciałem zrobić jedną tablicę, a całość miała być na miarę jakiejś bazy danych. Tutaj kod tworzenia tablicy ze struktury baza_danych i tablic dane ze struktury rekord:
public unsafe baza_danych* stworz_baze(uint rozmiar)
{
baza_danych *baza = stackalloc baza_danych[rozmiar];
for(uint i = 0; i < rozmiar; i++)
{
baza[i].nazwa_sekcji = "";
baza[i].zmodyfikowano = false;
baza[i].offset = 0;
baza[i].ilosc_rekordow = 0;
baza[i].dane = 0;
return baza;
}
}
public unsafe rekord* stworz_rekord(uint rozmiar)
{
rekord *dane = stackalloc rekord[rozmiar];
for(uint i = 0; i < rozmiar; i++)
{
dane[i].offset = 0;
dane[i].klucz = 0;
dane[i].wartosc = "";
dane[i].numer = 0;
dane[i].zmodyfikowano = false;
dane[i].nieprzebudowano = false;
dane[i].zmieniono_klucz = false;
}
return dane;
Niestety podczas próby kompilacji otrzymuję dwa błędy:
"Error 1 Cannot take the address of, get the size of, or declare a pointer to a managed type ('OpenENgine.rekord')"
"Error 2 Cannot take the address of, get the size of, or declare a pointer to a managed type ('OpenENgine.baza_danych')"
Nie mam za bardzo pojęcia co może być nie tak i co z tym zrobić...