Я написал свою программу, и она работает, когда я сохраняю все в файлах заголовков, а затем получаю основное. Я теперь разделяю их на файлы реализации, но Eclipse продолжает давать мне ошибки. Это дает мне ошибку при каждой открывающейся фигуре конструктора и функций. В нем говорится о каждом из них «Переопределение (название конструктора или метода), ранее объявленное здесь». Что я делаю неправильно, потому что он работает в файле заголовка?Реализация против файла заголовка
#include "KeyValuePair.h"
template<typename Key,typename Value>
KeyValuePair<Key,Value>::KeyValuePair()
{ // error here
}
template<typename Key,typename Value>
void KeyValuePair<Key,Value>::setPair(Key key, Value value)
{ // error here
pairKey = key;
pairValue = value;
}
template<typename Key,typename Value>
Key KeyValuePair<Key,Value>::getKey() const
{ // error here
return pairKey;
}
template<typename Key,typename Value>
Value KeyValuePair<Key,Value>::getValue() const
{ // error here
return pairValue;
}
Заголовочный файл:
#ifndef _KEYVALUEPAIR_H_
#define _KEYVALUEPAIR_H_
template<typename Key,typename Value>
class KeyValuePair
{
private:
Key pairKey;
Value pairValue;
public:
KeyValuePair();
void setPair(Key key,Value value);
Key getKey() const;
Value getValue() const;
};
#include "KeyValuePair.cpp"
#endif
Определения шаблонов идут в заголовочных файлах, и вы не делаете «# include» файлы реализации без уважительной причины для этого –