Globalna stala tablica

0

Witam.
Mam taki drobny problem z stworzeniem globalnej stałej tablicy. Jako że ma być stała to nie mogę jej wypełnić wewnątrz funkcji niestety jednak :


class Klasa
{
    private: const int i[] = {1,2};
};

nie działa. Jak i czy w ogóle to można zrobić? Z góry dzięki za wszystkie podpowiedzi.

0

Słowo kluczowe: static.

0

Możesz to wepchnąć do listy inicjalizacyjnej konstruktora, ale mój kompilator mówi że to wymaga do tego dodatkowych parametrów kompilatora.

0
nobodycodes napisał(a)

Słowo kluczowe: static.

Niestety ten sam bład.

Shalom napisał(a)

Możesz to wepchnąć do listy inicjalizacyjnej konstruktora, ale mój kompilator mówi że to wymaga do tego dodatkowych parametrów kompilatora.

Zapomniałem dodać że jestem raczej początkujący więc nie bardzo rozumiem, ale zmiana parametrów kompilatora niestety odpada.

0
class Foo
{
private:
    static const int tab[];
};

const int Foo::tab[] = {1, 2};
0

O ile dobrze pamiętam to w ciele klasy możesz tylko definiować stałe całkowitoliczbowe, nie tablice. W klasie musi być np static const int a[], a w jednej jednostce kompilacji (praktycznie w jednym i tylko w jednym pliku c++) const int nazwa_klasy::tab[5]={1,2,3,4,5}.

Edit: czyli dokładnie to, co napisał byku.

0

Ale po co ta klasa? To nie jest globalna stała tylko statyczna stała składowa klasy Foo. Globalna stała to:

const int tab[] = {1, 2};

w zakresie globalnym.

0

Wszystko śmiga dzięki wielkie za pomoc.

0

Ja trochę nie ogarniam. Przecież dodanie tam "static" zmienia zupełnie sens tego pola!

0

No ale raczej nie ma sensu w ten sposób robić stałej tablicy jako zmiennej obiektu, wystarczy, że będzie zmienną klasy. Gdyby się dało zainicjalizować tą tablicę na liście inicjalizacyjnej konstruktora to wtedy miałoby to sens. Nie wiem czy jakiś kompilator to już obsługuje(chyba da się w c++ 11).

1 użytkowników online, w tym zalogowanych: 0, gości: 1, botów: 0