Wykonuj różne metody na podstawie typu zmiennej szablonu
Czy istnieje sposób na określenie typu zmiennej przekazywanej do szablonu i wywołanie funkcji na podstawie, czy jest toint
lubstd::string
itp...?
Na przykład
template <class T>
struct Jam
{
Jam(T *var)
{
if (typeid(var) == typeid(std::string*)
*var = "Hello!";
else if (typeid(var) == typeid(int*)
*var = 25;
}
};
Gdy próbuję użyć tego kodu, pojawia się błądinvalid conversion from const char* to int
. Podejrzewam, że dzieje się tak, ponieważ kompilator „rozszerza” szablon na osobne funkcje i gdy określiłem nowe wystąpienie strukturythrow Jam<std::string>(&setme);
wykryłvar* = 25
oświadczenie i odmówił kompilacji.
Czy jest odpowiedni sposób, aby to zrobić? Może ze strażnikami makro? Dzięki.