Robię listę(jak już było w jednym temacie) na szablonach. Chcę zrobić funkcję, która wyszukuje wśród elemnetów listy dane. Ale o ile przy incie i przy stringu == pozwoli na porównanie, to przy np. char* trzeba by było użyć funkcji. Więc mam pytanie - jak bym mógł sprawdzić typ elementów w liście i używać do odpowiednich typów odpowiednie funkcje?
EDIT - Już rozwiązany! Użyłem typeid()
0
0
Znów pojawił się problem. Jak robie listę inta, to przy funkcji strcmp() kompilator krzyczy, że nie ten typ argumentów :/. Jak to zrobić, żeby nie krzyczał? Jakieś makro czy coś?
0
int IndexOfThis(TypDanych DANE)
{
Czesc<TypDanych>* Wska = First;
int INDEX = -1;
if(Ilosc == 0)return INDEX;
for(int a = 0, index = 0; a != Ilosc; a++, index++)
{
if(typeid(TypDanych) == typeid(char*))
{
if(!(strcmp((char*)Wska->dane(), (char*)DANE)))return index;
}
else
{
if(Wska->dane() == DANE)return index;
}
Wska = Wska->next();
}
return -1;
}
To kod funkcji, dane() zwraca dane umieszczone w tym elemencie(klasa czesc), first to 1 element, -1 sygnalizuje nieznalezienie.
1
Hmmm... a nie łaska dodać sobie funkcję:
char* operator==(const char*& s1, const char*& s2) { return strcmp(s1, s2); }
0
Tak dałem operator == - bool operator==(const char* s1, std::string s2) { return strcmp(s1, s2.c_str()); }