używanie przestrzeni nazw klasy

Odpowiedz Nowy wątek
2011-09-21 15:16
0

mam klasę:

class A
{
public:
enum {COS,COS2};
};

oraz jakąś metodę w innej klasie:

void B::metoda()
{
   map<string,int> a;
   a["cos"] = A::COS;
   a["cos2"] = A::COS2;
   // ...
}

teraz chodzi mi o to abym mógł tą metodę zapisać coś w ten deseń:

void B::metoda()
{
   map<string,int> a;
   using /*class, namespace czy coś innego*/ A;
   a["cos"] = COS;
   a["cos2"] = COS2;
   //...
}

w ostateczności wrzucę tego enuma do jakiejś przestrzeni nazw albo zrobię makro, ale wolałbym się dowiedzieć czy i jak da się do zrobić


░█░█░█░█░█░█░█░█░█░█░█░
edytowany 1x, ostatnio: krwq, 2011-09-21 15:19

Pozostało 580 znaków

2011-09-21 15:56
0

Afaik nie da się.

Możesz zrobić wspólną bazę z tym enumem i dziedziczyć lub wsadzić to do jakiejś przestrzeni nazw jak napisałeś.

Btw co złego jest w A::COS? Plus moim zdaniem nie powinieneś traktować enumów jak intów.


"(...) otherwise, the behavior is undefined".
czemu nie traktowac jak inty? nie chce mi się robić 150 const intów z ręcznym pisaniem ich wartości ;P - krwq 2011-09-21 16:19
ważne że da się skonwertować, w masochizm pobawie się kiedy indziej :) - krwq 2011-09-21 16:26
Ale czemu nie nazwiesz tego enuma a mapę zrobisz map<string, A::MyEnum>? Ładniej i czytelniej - hauleth 2011-09-22 21:42
masz rację i chyba tak zrobie, ale to później jest wysyłane przez sieć, więc i tak ostatecznie będę musiał to rzutować na inta - bo nie mam pewności czy enum ma wielkość 4 bajtów - krwq 2011-09-23 11:51

Pozostało 580 znaków

2011-09-22 21:04
0

Da się. zrób:

class B: private A { ... }

;-)


Szacuje się, że w Polsce brakuje 50 tys. programistów

Pozostało 580 znaków

Odpowiedz
Liczba odpowiedzi na stronę

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