Итак, у меня есть 2 класса, шаблонный номер Node<T>
и без него номер Context
. У меня есть несколько методов в Context, которые должны возвращать любой тип Node<T>
.Метод C++, который может возвращать различные шаблонные типы
Например, иногда нужно будет возвращать Node<double>
и иногда Node<int>
и т.д. У меня также есть некоторые методы, которые я хотел бы иметь, что принимать любой тип Node<T>
в качестве параметра.
Есть ли способ сделать это, который не включает отдельные методы в Context
для каждого возможного случая?
class Node
{
T Val;
public:
Node(T value) : Val(val) {}
T getVal() { return Val; }
}
class Context
{
Node<type>* divide(Node<type>* LHS, Node<type>* RHS)
{
type Solution LHS->getVal()/RHS->getVal();
return new Node<type>(Solution);
}
}
К примеру, здесь, я хочу вернуться либо Node<double>
если ответ заканчивает тем, что десятичное, то я хочу, чтобы вернуть Node<int>
. Он вернет Node<double>
с разрешением Node->Val;
. В другое время операция вернет Node<int>
(например, 4/2
), поэтому вместо этого она вернет Node<int>
. Это сокращенный пример того, что я хочу сделать, но его та же идея.
звучит как случай для полиморфизма –
Я думаю, что вы должны быть более desciptive. Вы либо хотите [полиморфизм] (http://www.cplusplus.com/doc/tutorial/polymorphism/), либо [templated function] (http://www.cplusplus.com/doc/tutorial/templates/) – dwcanillas
" У меня есть 2 объекта, Object и Context. " Думаю, вы имели в виду ** классы **. «иногда ему нужно будет вернуть объект, а иногда и объект», пожалуйста, перефразируйте это. Похоже, ты сделал опечатку. – Hiura