Объяснение: Здесь «шаблон функции» объявляется с параметром шаблона Dim
типа int
,Это переменная , которая будет содержать integer (не класс, то есть то, что вы пытаетесь сделать там ...), который будет назначен ей при использовании.Примерно так: -
auto S = Sum<2>(2);
Здесь в параметрах вы задали целое число "2
" , шаблон принимает значение Dim
(В этом случае 2 ) и добавляет его с параметром with
, (в данном случае 2 ) внутри функции и возвращает результат выражения.( 2 + 2 = 4 )
Где ваша проблема заключается в этом конструкторе,
modifier(DTreeEmbedder<int>* e)
Здесь есть одна проблема, учитывая, что выобъявили Dim
там как целое число, теперь добавление класса int
внутри параметра неверно ...
Так должно быть: -
modifier(DTreeEmbedder<111>* e) // Or any other number, since Dim is an integer
Думайте об этом параметре шаблона как о реальной целочисленной переменной, так что вы делаете что-то вроде: -
int Dim = int; /*Which is a type (class)*/
in
DTreeEmbedder<int> /*Assigning a class to an integer (Dim in this case)*/
Другая ошибка - это ошибка присваивания, проверьте, совпадают ли обе переменные, даже целочисленные значения, назначенные внутри шаблона, должны совпадать, поскольку Dim является целым числом ...
Например, DTreeEmbedder<90>
не равно DTreeEmbedder<91>
или что-то в этом роде ...