更新了文件,但仍然出现以下错误。
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;
}
答案 0 :(得分:4)
你已经被using namespace std;
所吸引。您有自己的pair
课程,但标准库中有std::pair
。编译器无法决定使用哪一个,因此会出现模糊的符号错误。
解决方案:Don't use using namespace std;
!使用std::
来限定标准库符号。这样可以省去很多麻烦。
答案 1 :(得分:0)
命名空间std还包含一个名为pair的模板类。
您需要将自己的配对模板包装在自己的命名空间中,或者将其命名为其他模板,这样您就可以在没有模糊符号错误的情况下调用它。