tablica zewnętrzna nie widoczna w klasie

0

Witam. Jak można zrobić żeby nie deklarując w klasie składowej tablicy była ona widoczna dla funkcji klasy? Dodam że ta tablica jest tablica zainicjowana już w momencie deklaracji.
mam ją w pliku tablica.cpp. Z góry dziękuję za wszelkie sugestie

0

Zapewne musisz użyć extern? Zazwyczaj robi się to tak, że jest plik nagłówkowy z extern ..., który jest dołączany do każdego pliku, gdzie zmienna jest potrzebna, a tylko jeden z nich definiuje tę zmienną.

Co Ty w zasadzie próbujesz osiągnąć?

0

w pliku tablica.h napisać:
extern int tablica[]; - czy jakoś tam aby odpowiadało deklaracji.
dołączyć plik tablica.h

0

już tłumaczę...
Mam klasę której każdy obiekt będzie używał tych samych danych z tablicy.

mam taka tablice:

 

enum SYMBOL { e, a, b, c, d };

const SYMBOL TabDodawania[5][5]= 
{
 	{ e, a, b, c, d },
 	{ a, b, c, d, e },
 	{ b, c, d, e, a },
	{ c, d, e, a, b },
 	{ b, c, d, e, a }
};

i to jest plik tablica.h
mam dodac przed const extern
i dolaczyc do naglowka tablica.h?

0

tabilca.h
enum SYMBOL { e, a, b, c, d };
extern const SYMBOL TabDodawania[5][5];

tablica.cpp
#include "tabilca.h"
const SYMBOL TabDodawania[5][5]=
{
{ e, a, b, c, d },
{ a, b, c, d, e },
{ b, c, d, e, a },
{ c, d, e, a, b },
{ b, c, d, e, a }
};

Ale powinieneś to zrobić jako składową statyczną klasy.

0

No i jak bym zainicjował takie tablice jako składowe?

0

Tak, jak inicjalizuje się statyczne składniki klas.

W C++11 można nawet tak:

class X {
public:
  // Wybacz, nie chce mi się tyle literek pisać. ;-)
  enum Symbol {
    a, b, c     
  };
  
  constexpr static Symbol Tablica[3][3] = {
    {a, b, c},
    {c, b, a},
    {b, a, c}
  };
  
};
0

Używam g++ i dostałem taki err:

 
inc/symbol.hh:25:2: note: C++0x ‘constexpr’ only available with -std=c++0x or -std=gnu++0x

Czego to wina?

0

To była taka ciekawostka, myślałem, że wiesz jak to zrobić "po staremu". Żeby to działało dodaj do opcji kompilatora -std=c++0x. Możesz też to olać i zrobić "starą" inicjalizację:

class X {
public:
  // Wybacz, nie chce mi się tyle literek pisać. ;-)
  enum Symbol {
    a, b, c     
  };
  
  const static Symbol Tablica[3][3];
  
};
 
const X::Symbol X::Tablica[3][3] = {
  {a, b, c},
  {c, b, a},
  {b, a, c}
};

Chyba powinieneś się nauczyć tego języka, jeżeli chcesz w nim pisać.

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