如何使用模板返回char值

时间:2014-12-03 15:46:09

标签: c++ templates

我没有完全理解这些模板在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;
}

2 个答案:

答案 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)
{

}