类模板错误

时间:2015-11-21 06:56:22

标签: c++ templates

提出的问题与所谓的重复帖子非常不同,因为我有特定的错误,他们只是问为什么它需要在.h文件中...我已经在头文件中得到它并且我得到了以下错误。

更新了文件,但仍然出现以下错误。

  • 1未解析的外部(lab12.exe第1行)
  • 未解析的外部符号" public char__thiscall Pair :: geetFirst(void)" (?getFirst @?$ Pair @ 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;
}

1 个答案:

答案 0 :(得分:1)

您应该将模板类Pair的所有代码放入头文件中。

此外,无需在标头中将方法声明与定义分开。

&#39;配对T ::配对&#39;是错的,因为你在这里不需要T.