Witam! Napisałem sobie ostatnio szablon funkcji, który dodaje/łączy do siebie dwie wartości, zwracając sumę tych wartości. Wszystko było dobrze, ale gdy chciałem w ten sposób połączyć dwie wartości typu const char* , to kompilator pokazał błąd, że nie można łączyć operatorem + dwóch wartości tego typu. Dlatego napisałem, więc specjalizację dla tego typu i cały kod prezentuje się tak:
template<typename T> T dodaj(T a, T b)
{
return a + b;
}
// specjalizacja dla typu const char*
template<> const char* dodaj<const char*>(const char* a, const char* b)
{
string aa = a;
string bb = b;
string ret = aa + bb;
return ret.c_str();
}
Problem polega na tym, że gdy program wyświetli wynik zwrócony przez tę funkcję, to wyświetlają się dziwne znaczki, np: dla takiego wywołania funkcji:
cout << dodaj("tekst1 ","tekst2");
Wyświetlają się takie znaki:
└■( Ű♠K P■( 2
W takim razie, chce was zapytać co zrobiłem źle w tym kodzie?
Z góry dzięki za pomoc!