Я работаю над кодом, в котором у меня есть два класса, каждый с методом, который возвращает указанный класс с определенным значением.Теперь эти два класса имеют разные имена, а методы, которые возвращают указанный класс с определенным значением, имеют разные имена, однако значение одно и то же.
пример
class_a a = class_a::get_value_a()
class_b b = class_b::get_value_b()
a.value() == b.value() is true
Теперь я пытаюсь сделать общий способ получить это значение, используя шаблон
пример
class_generic g_a = class_generic::get_value<class_a>();
class_generic g_b = class_generic::get_value<class_b>();
g_a.value() == g_b.value() is true
Но при создании шаблона я попытался сделать следующее
template <typename T> T class_generic::get_value()
{
if (typeid(T).hash_code() == typeid(class_a).hash_code())
{
return class_a::get_value_a()
}
if (typeid(T).hash_code() == typeid(class_b).hash_code())
{
return class_b::get_value_b();
}
}
Но это не скомпилируется, и мне кажется, что он пытается разрешить оба возвращаемых типа и конвертирует один.
Так как мне сделать это правильно?
regards