używanie przestrzeni nazw klasy

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

Rejestracja: 10 lat temu

Ostatnio: 10 godzin temu

Lokalizacja: Redmond, WA

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

Rejestracja: 16 lat temu

Ostatnio: 1 rok temu

Lokalizacja: Katowice

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

Rejestracja: 8 lat temu

Ostatnio: 3 dni temu

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

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