Заданный вопрос сильно отличается от так называемого дубликата сообщения, поскольку у меня есть определенные ошибки, и они просто спрашивают, почему это должно быть в файле .h. У меня уже есть его в файле заголовка и я получаю ошибки ниже.Ошибки шаблона класса
Обновлены файлы, и я до сих пор получаю следующие ошибки.
- 1 неразрешенных внешних (lab12.exe линия 1)
- неразрешенный внешний символ "общественного char__thiscall пара :: geetFirst (аннулируются)" (? GetFirst @? $ Пара @ D @@ QAEDXZ) ссылка в function_main (lab12.obj линия 1)
Pair.h
#pragma once
template <class T>
class Pair
{
private:
T theFirst;
T theSecond;
public:
/*Pair(const T& dataOne, const T& dataTwo);*/
Pair(T a, T b) {
theFirst = a;
theSecond = b;
}
T getFirst();
T getSecond();
};
Pair.cpp
#include "stdafx.h"
#include "Pair.h"
template<class T>
T Pair<T>::getFirst()
{
return theFirst;
}
template<class T>
T Pair<T>::getSecond()
{
return theSecond;
}
main.cpp
#include "stdafx.h"
#include "Pair.h"
#include <iostream>
using namespace std;
int main()
{
Pair <char> letters('a', 'd');
cout << letters.getFirst();
cout << endl;
system("Pause");
return 0;
}
Как дубликат не отвечает на ваш вопрос? Вы должны поместить всю реализацию шаблона в файл заголовка. –
Это также может помочь. http://stackoverflow.com/a/12574417/3747990 – Niall