Mám kód
xxx = {
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"}
};
A nevím co mám napsat místo toho xxx aby to fungovalo. Má to být konstantní pole. Píšu v C++.
Mám kód
xxx = {
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"}
};
A nevím co mám napsat místo toho xxx aby to fungovalo. Má to být konstantní pole. Píšu v C++.
Zapomněl jsem to tam zmínit. Mají to být Cčkový stringy (char *).
Mě funguje tohle
const char * xxx[4][2] = {
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"}
};
Problém je, že když pak v kódu napíšu
xxx[1][1] = NULL;
Tak to v klidu projde, což právě moc nechci...
Tak jsem zkusil všechny kombinace s const a verze
const char * const xxx[4][2] = {
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"},
{"str1", "str2"}
};
zdá se být správná. Trochu se v tom už ztrácím .
#4 PiranhaGreg
Tak pokud nechceš, aby to umělo NULL, tak to udělej normálně takhle, ne?
#define MAX 15
char pole[4][2][MAX] = {
{ "str1", "str2" },
{ "str1", "str2" },
{ "str1", "str2" },
{ "str1", "str2" }
};
//vypsání jde, modifikace nikoliv
for (int i = 0; i < 4; ++i)
{
for (int j = 0; j < 2; ++j)
{
std::cout << pole[i][j] << std::endl;
}
}
A máš statický pole na stacku. Pochopitelně počítej s tím, že toto nepůjde po deklaraci s inicializací také měnit.
Ta tvoje verze mi něco jako
pole[1][1][5] = 'a';
úplně klidně povolí. Když to u mé verze to krásně zařve na každým možným zápisu :-).
test.cpp:163:6: error: read-only variable is not assignable
xxx = NULL;
~~~ ^
test.cpp:164:9: error: read-only variable is not assignable
xxx[1] = NULL;
~~~~~~ ^
test.cpp:165:12: error: read-only variable is not assignable
xxx[1][1] = NULL;
~~~~~~~~~ ^
test.cpp:166:15: error: read-only variable is not assignable
xxx[1][1][1] = 'a';
~~~~~~~~~~~~ ^
Takže takhle mi to nakonec vyhovuje.
Ano, opravdu chci reagovat → zobrazí formulář pro přidání příspěvku