2014-12-03 3 views
0

Я не понимаю, как эти шаблоны работают на C++, у меня есть код драйвера, который я пытаюсь написать для файла заголовка. Я могу получить этот код для компиляции и его предполагается вывести 'a' для первого символа и 'd' для второго символа. Я получаю неузнаваемое письмо в выводе для первого и второго символов, если кто-нибудь может указать, где я ошибся с этим заголовочным файлом. Заранее спасибо.Как вернуть значения char с помощью шаблона

Заголовочного файл

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; 
} 

Driver File

#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

Ваш конструктор не делает ничего полезного. Вы хотите, чтобы использовать его параметры для инициализации переменных-членов:

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

Если вы включили предупреждения компилятора, он должен вам сказать, что заявления firstChar; и secondChar; ничего не делать.

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

} 
Смежные вопросы