Почему возникает ошибка линковки и как ее решить?

Есть для примера маленький шаблонный класс, который содержит единственный метод. Я хочу обратиться к нему через объект и вызвать в main, но выдает ошибку:

Серьезность Код Описание    Проект  Файл    Строка  Состояние подавления
Ошибка  LNK1120 неразрешенных внешних элементов: 1  lesson  C:\Visual Studio\lesson\x64\Debug\lesson.exe    1 
Серьезность Код Описание    Проект  Файл    Строка  Состояние подавления
Ошибка  LNK2019 ссылка на неразрешенный внешний символ "public: int __cdecl Class::sum(int,int)" (?sum@?$Class@H@@QEAAHHH@Z) в функции main lesson  C:\Visual Studio\lesson\main.obj    1   

main.cpp

#include <iostream>
#include "1.h"

int main()
{
  Class<int> n;
  int x = 2;
  int y = 5;
  std::cout << n.sum(x, y) << std::endl;
  return 0;
}

1.h

#pragma once

template <class T>
class Class {
public:
  int sum(T x, T y);
};

1.cpp

#include "1.h"

template <class T>
int Class<T>::sum(T x, T y) {
  T s = 0;
  s = x + y;
  return s;
}

IDE Visual Studio Что я упустил при изучении шаблонов?


Ответы (0 шт):