我没有完全理解这些模板在C ++中是如何工作的,我有一个驱动程序代码,我正在尝试编写头文件。我可以编译这个代码,它应该为第一个char输出'a',为第二个char输出'd'。我在第一个和第二个字符的输出中收到一个无法识别的字母,如果有人可以指出我在这个头文件出错的地方。提前谢谢。
标头文件
template <class T>
class Pair
{
private:
T firstChar;
T secondChar;
public:
Pair(const T& , const T&);
T getFirst( );
T getSecond( );
};
template <class T>
Pair<T>::Pair(const T&, const T&)
{
firstChar;
secondChar;
}
template <class T>
T Pair<T>::getFirst ( )
{
return firstChar;
}
template <class T>
T Pair<T>::getSecond ( )
{
return secondChar;
}
驱动程序文件
#include <iostream>
#include "pair.h"
using namespace std;
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;
}
答案 0 :(得分:2)
你的构造函数没有做任何有用的事情。您希望它使用其参数初始化成员变量:
template <class T>
Pair<T>::Pair(const T& first, const T& second) :
firstChar(first),
secondChar(second)
{}
如果您启用编译器警告,它应该告诉您语句firstChar;
和secondChar;
什么都不做。
答案 1 :(得分:1)
template <class T>
Pair<T>::Pair(const T&, const T&)
{
firstChar;
secondChar;
}
这个构造函数没有做任何事情,它没有任何命名参数,也没有将它们分配给成员属性,也许你想使用:
template <class T>
Pair<T>::Pair(const T& first, const T& second) : firstChar(first), secondChar(second)
{
}