如何使用模板返回字符值

How to return char values with a template

本文关键字:字符 返回 何使用      更新时间:2023-10-16

我无法完全理解这些模板在C++中的工作原理,我有一个驱动程序代码,我正在尝试为其编写头文件。 我可以让这段代码进行编译,它应该为第一个字符输出"a",为第二个字符输出"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;
}

你的构造函数不做任何有用的事情。您希望它使用其参数来初始化成员变量:

template <class T>
Pair<T>::Pair(const T& first, const T& second) :
    firstChar(first),
    secondChar(second)
{}

如果启用编译器警告,它应该告诉您语句firstChar;secondChar;不执行任何操作。

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)
{
}