Ładny brzuch

Po pierwsze: dlaczego szablon w Visual C++ 2005 std::vector przyjmuje dwa argumenty? Czy vector nie powinien przyjmowa tylko jednego?

Po drugie: mam nastpujc klas:
#include "zasada.h" #include <vector> class zbior_zasad { std::vector<zasada*> zbior; public: przywroc() { for (int i = 0; i < zbior.size(); i++) { zbior[i]->przywroc_to(); } } dodaj(zasada* nowa) { zbior.push_back (nowa); } };
Dalej w kodzie Visual C++ uznaje kady jej obiekt jako typu int, a kiedy klikam PPM i wybieram "Go to Declaration" przechodzi nie do deklaracji, ale do jednego (nie pierwszego) wywolania funkcji dodaj; Czy wie kto dlaczego? Czy ma to zwizek z tym, e daem tylko jeden argument do szablonu vector?



Jeeli chodzi o dwa argumenty, to pierwszy jest naturalnie typem danych w jakim chcesz wygenerowa vector'a. Drugi jest opcjonalny i jest to (chyba, nie pamitam dokadnie nazwy) alokator - obiekt zajmujcy si pamici. Drugim na razie si nie przejmuj, domylny jest zwykle do wszystkiego dobry.

Drugie pytanie - to nie jest C - kada funkcja i metoda (wyjtkiem s konsturktory i destruktory) musi mie typ zwracany - to jest twj bd, bo nie ma przy metodach chociaby void.

Dziki, ale to jako nie pomaga... W kadym razie nie potrafi zrozumie linijki
zbior[i]->przywroc_to();
Klasa zasada ma tak funkcj, ale tutaj wypisuje, e nie potrafi zrozumie lewej strony od ->.

Moze poka najpierw kod od tej klasy zasada? Tak raczej trudno mi zgadn co jest le.




Moze poka najpierw kod od tej klasy zasada? Tak raczej trudno mi zgadn co jest le.
Oto i ona:
class zasada { static vector<zasada*> zbior; public: int min, max, domysl, wartosc; zasada (int min_t, int max_t, int domysl_t) : min(min_t), max(max_t), domysl(domysl_t), wartosc(domysl_t) { zbior.push_back(this); } operator int() { return wartosc; }; static void przywroc_all() { for (unsigned int i = 0; i < zbior.size(); i++) zbior[i]->przywroc_to(); } void przywroc_to() { wartosc = domysl; } bool czy_pasuje (int ile) { //liczba zero w polu max oznacza nieskonczonosc if (ile == 0) { if (min > 0 && max != 0) return false; else return true; } else if (ile < max && ile > min) return true; return false; } zasada & operator= (int ile) { if (czy_pasuje(ile)) wartosc = ile; return *this; } };

  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •