I'm trying to link declaration part to realization part, but I don't know how to do it correctly. I've found one solution in Internet, but it doesn't work. I'll really appreciate your help if you know good sources on this topic.
Errors are:
error C2995: Couple<K, V>::Couple(K key, V value)
template of function already defined
error C2995: void Couple<K, V>::setKey(K key)
template of function already defined
..etc..
My code here
//Couple.h
#pragma once
#ifndef _COUPLE_H_
#define _COUPLE_H_
template<typename K, typename V>
class Couple {
private:
K key;
V value;
public:
Couple(K key, V value);
void setKey(K key);
void setValue(V value);
K getKey();
V getValue();
};
#include "Couple.cpp"
#endif
//Couple.cpp
#include "Couple.h"
template<typename K, typename V>
Couple<K, V>::Couple(K key, V value){
Couple<K, V>::key = key;
Couple<K, V>::value = value;
}
template<typename K, typename V>
void Couple<K, V>::setKey(K key) {
Couple<K, V>::key = key;
}
template<typename K, typename V>
void Couple<K, V>::setValue(V value) {
Couple<K, V>::value = value;
}
template<typename K, typename V>
K Couple<K, V>::getKey() {
return Couple<K, V>::key;
}
template<typename K, typename V>
V Couple<K, V>::getValue() {
return Couple<K, V>::value;
}
//main.cpp
#include<iostream>
#include<string>
#include "Couple.h"
using namespace std;
int main()
{
Couple<string, int> person = Couple<string, int>("John", 20);
cout << person.getKey() << " " << person.getValue();
}