Napisałem już, tylko nie działa mi prawidłowo:
Mam taki kod:
void Drzewo::Wczytaj(const char * file)
{
(...)
Drzewo ** tab = new Drzewo * [n+1];
tab[0] = this;
(...)
if (...)
{
tab[i] = tab[i-1]->X[0];
tab[i] = new Drzewo;
}
(...)
}
I dlaczego jak i = 1, tab[0]->X[0] == NULL ? Wcale nie przydziela pamięci. Nic nie rozumiem.
Daję cały kod:
void Zwierze::Wczytaj(const char * file)
{
ifstream fin;
fin.open(file);
if (!fin.is_open())
return;
string pLO;
char ch;
int n = Max(file);
Zwierze ** tab = new Zwierze * [n + 1];
tab[0] = this;
int * t = new int [n];
for (int i = 0; i < n; i++)
t[i] = 0;
int i = 0;
bool flaga = true;
while (!fin.eof())
{
while ((ch = fin.get()) != '(' && ch != ')' && ch != EOF)
pLO += ch;
if (ch == EOF)
return;
if (flaga)
{
tab[i]->pytanieLubOdpowiedz = pLO;
pLO = "";
}
if (ch == '(')
{
i++;
t[i-1]++;
flaga = true;
if (t[i-1] % 2 == 1)
{
tab[i] = tab[i-1]->Odp[0];
tab[i] = new Zwierze;
}
else
{
tab[i] = tab[i-1]->Odp[1];
tab[i] = new Zwierze;
}
}
if (ch == ')')
{
i--;
flaga = false;
}
}
}