如何使用模板函数传递对象?

时间:2016-08-06 19:15:08

标签: c++

做我的作业,卡在模板功能部分。我的main()文件中有以下.cpp

int main() 
{
Pair<char> letters('a', 'd');
cout << "\nThe first letter is: " << letters.getFirst();
cout << "\nThe second letter is: " << letters.getSecond();

cout << endl;

system("pause");
return 0;
}

我需要使用template使class成为可取的,这就是我在.h文件中的内容:

template <class T>
class Pair
{
private:    
  T letters;
public:
  T getFirst();
  T getSecond();
};

现在,在我的VS中,它表示找不到getFrist()getSecond()。我如何在class中将{T}作为template传递?

1 个答案:

答案 0 :(得分:4)

您的Pair<T>::getFirst文件中的getSecond / .h没有实施,是吗?这是一个常见的陷阱;你的编译器需要“看到”编译时的Pair<char>::getFirst()实际上是什么。

当你把对象放在一起,链接各个编译单元时,已经太晚了。

因此,将模板方法的实现放在标题中。

另外,不要重新发明轮子。 char letters[2]与您的对一样有用,如果您确实需要键/值对,std::pair就是您想要的 - 它甚至是关联容器的核心,如std::map