类模板C ++错误

时间:2015-11-21 06:09:53

标签: c++ templates

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

  • 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;
}

2 个答案:

答案 0 :(得分:4)

你已经被using namespace std;所吸引。您有自己的pair课程,但标准库中有std::pair。编译器无法决定使用哪一个,因此会出现模糊的符号错误。

解决方案:Don't use using namespace std;!使用std::来限定标准库符号。这样可以省去很多麻烦。

答案 1 :(得分:0)

命名空间std还包含一个名为pair的模板类。

您需要将自己的配对模板包装在自己的命名空间中,或者将其命名为其他模板,这样您就可以在没有模糊符号错误的情况下调用它。