• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Konstruktor dla bitsetu, biorący char* za parametr

0 głosów
297 wizyt
pytanie zadane 30 września 2015 w C i C++ przez broda Początkujący (380 p.)
edycja 30 września 2015 przez event15

Witam. Klasa reprezentuje zbiór. Do tego celu użyłem kontenera bitset
 

template <class T, int N>
class Zbior
{
    bitset<N> bity;

public:
    Zbior();
    Zbior(int);
    Zbior(char*);


........................

Mam problem z konstruktorem, ktory bierze tablicę znaków.
Powinno działać to tak:
tworzymy obiekt w taki sposób: Zbior przyklad("000100110110")
(symbolizuje to zbiór {1,2,4,5,8}

Napisałem takie coś ():

template <class T, int N>
Zbior<T,N>::Zbior(char* a)
{
    string b=string(a);
    bitset<N> nowy(string("1101110"));
//    bitset<N> nowy(string(b));
    bity=nowy;
}


To, co jest, działa, jeśli podam wprost jakąś liczbę, ale nie wiem, dlaczego się sypie, gdy próbuję uruchomić to, co jest teraz zakomentowane...

1 odpowiedź

0 głosów
odpowiedź 30 września 2015 przez adrian17 Mentor (355,180 p.)
//    bitset<N> nowy(string(b));

Rozumiem, że błąd kompilacji? Poczytaj o "most vexing parse". Głupia sprawa, wiem. Rozwiązanie proste, dodać nawiasy:

bitset<N> nowy((string(b)));

Albo użyć inicjalizacji klamrowej z C++11:

bitset<N> nowy(string{b});
// lub:
bitset<N> nowy{string{b}};

A tak naprawdę to w ogóle nie musisz tego robić, bo konstruktor bitsetu może też brać const char*:

 bitset<N> nowy("1101110");

 

Podobne pytania

0 głosów
1 odpowiedź 272 wizyt
0 głosów
1 odpowiedź 948 wizyt
pytanie zadane 13 kwietnia 2020 w C i C++ przez Agtal Nowicjusz (150 p.)
0 głosów
1 odpowiedź 2,236 wizyt
pytanie zadane 28 października 2018 w C i C++ przez jjanickij Użytkownik (510 p.)

93,741 zapytań

142,677 odpowiedzi

323,296 komentarzy

63,326 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...