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

question-closed Typ vector<bool>

0 głosów
346 wizyt
pytanie zadane 27 maja 2017 w C i C++ przez redie Obywatel (1,490 p.)
zamknięte 27 maja 2017 przez redie

Cześć, próbuję w swoim projekcie zrobić vector<bool> w klasie o coś takiego:

class Grafy {
public:
	unsigned density;
	unsigned size;
	vector<bool>checked; ----> to nie działa
	explicit Grafy() { }
	virtual ~Grafy() { }
	virtual void insert(unsigned, unsigned) = 0;
	virtual void print() const = 0;
	virtual void check(unsigned) const = 0;
	virtual void DFS(unsigned) const = 0;
	virtual void remove(unsigned, unsigned) = 0;
};

nie mogę stworzyć z tego tablicy, gdyż to nie zna jeszcze swojej wielkości dopiero po zadeklarowaniu wielkości wiem ile miejsc ma ten wektor. I jeszcze operuję na elementach tej śmiesznej tablicy :) Pomoże ktoś to zmienić, żeby to działało ?? Uparłem się na użycie vectora ;)

komentarz zamknięcia: Problem rozwiązałem, w funkcji która miała typ const próbowałem zmienić tę zmienną bool i dlatego się krzaczyło
komentarz 27 maja 2017 przez 10kw10 Pasjonat (22,880 p.)
jaki blad ?

Moze zapomniales o dodaniu biblioteki <vector> lub o std::
komentarz 27 maja 2017 przez redie Obywatel (1,490 p.)
Takie rzeczy mam pododawane już odgórnie.

"expression must be a modifiable lvalue"

Coś takiego jak mam vector<bool>;

A jak dam np. static vector<bool> to znika to podkreślenie ale

1>Graf.obj : error LNK2001: unresolved external symbol "public: static class std::vector<bool,class std::allocator<bool> > Grafy::checked" (?checked@Grafy@@2V?$vector@_NV?$allocator@_N@std@@@std@@A)

mam taki błąd wtedy i słabo rozumiem przyczynę :/
komentarz 27 maja 2017 przez Buby Pasjonat (19,590 p.)

Witaj, jeśli możesz, to pokaż trochę więcej kodu - sama klasa wygląda okej, nawet specjalnie skompilowałem plik, który ją zawierał, no i mój kompilator nie zgłosił błędu.

Pierwszy komunikat "expression must be a modifiable lvalue" oznacza, że próbujesz przypisać jakąś wartość, prawdopodobnie do wartości - np. ten błąd może występować, gdy funkcja zwraca wartość, a nie referencję i próbujesz coś do niej przypisać, bądz przez jakis zapis [wartosc] = [wartosc]. Stąd też chciałbym zobaczyć ciut więcej kodu. :)

 

A co do typu vector<bool>, to jako ciekawostkę powiem, że ta konkretyzacja szablonu vector, jest zaimplementowana trochę inaczej niż pozostałe - poszczególne elementy nie są przechowywane w tablicy, tylko jako pojedyńcze bity. Ta konkretyzacja dostarcza też dodatkowe metody. Więcej możesz doczytać tutaj.

Podobne pytania

0 głosów
2 odpowiedzi 1,263 wizyt
pytanie zadane 18 czerwca 2015 w C i C++ przez Kamil Początkujący (430 p.)
0 głosów
2 odpowiedzi 258 wizyt
pytanie zadane 8 grudnia 2018 w C i C++ przez zadca123 Nowicjusz (140 p.)
–1 głos
0 odpowiedzi 167 wizyt
pytanie zadane 8 grudnia 2018 w C i C++ przez zadca123 Nowicjusz (140 p.)

93,775 zapytań

142,731 odpowiedzi

323,383 komentarzy

63,379 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.

...