Aktywne Wpisy

Marek_Tempe +10
Pamiętam kiedyś była taka zasada: "Leżącego" się nie kopie, przestrzegała jej nawet najgorsza ówczesna patola. Co się z wami ludzie stało?

annlupin +3
jakie muzyczki do wina rano najlepiej ʕ•ᴥ•ʔ
Skopiuj link
Skopiuj link

Wykop.pl
No elo. Mam dla Was kolejną programistyczną zagadkę. Do rzeczy:
Oto nagłówek szablonu klasy dziedziczącej po vectorze (tak, wiem że to zły pomysł, ale to nie jest temat na tę dyskusję).
-------------------------------------------------------------------
#ifndef _OBJECTS_H
#define _OBJECTS_H
#include
#include "Global.h"
template
class Objects : public std::vector
{
public:
Objects();
```T GetObjectByID(int32_t value); private:int ID;std::string name;typedef typename vector::const_iterator iterator;```
};
#endif
--------------------------------------------------------------------
No i definicje metod:
-------------------------------------------------------------------
#include "../Include/Objects.h"
template
Objects::Objects()
{
// bla bla bla
}
template
T Objects::GetObjectByID(int32_t value)
{
for(iterator it = begin(); it != end(); ++it)
{
if((*it)->GetID() == value)
{
return *it;
}
}
return nullptr;
}
-------------------------------------------------------------------
W czym problem? W tym że pomimo że dziedziczę z vectora, kompilator nie widzi metod begin() i end(). Wcześniej ta klasa obsługiwała jeden, sztywny typ, i wszystko działało. Niestety po zmianie na szablon, jest problem. Wie ktoś jak to rozwiązać? :P
BTW. Podobny problem znalazłem tutaj, ale bez rozwiązania. http://bytes.com/topic/c/answers/480571-inherit-vector-class
thisnie jest wymagane w C++? Lata C++ na oczy nie widziałem, ale pamiętam, że zawsze używałem
this->.
{
if((*it)->GetID() == value)
@Xanatos: ogólnie dopiero zapoznaję się z C++11 i jeszcze nie o wszystkim wiem i nie wszystkiemu ufam. :D