.cpp ファイルのテンプレート クラス (構造体) に非テンプレート メソッドの実装を記述することはできますか? テンプレート メソッドは .h に記述する必要があると読みましたが、私のメソッドはテンプレート クラスに属していますが、テンプレート メソッドではありません。これが私の.hのコードです:
#include <iostream>
#ifndef KEY_VALUE_H
#define KEY_VALUE_H
using namespace std;
namespace types
{
template <class T, class U>
struct key_value
{
T key;
U value;
static key_value<T, U> make(T key, U value)
{
key_value<T, U> kv;
kv.key = key;
kv.value = value;
return kv;
};
string serialize()
{
// Code to serialize here I want to write in .cpp but fails.
}
};
}
#endif /* KEY_VALUE_H */
serialize()
メソッドの実装を.cpp ファイルに次のように書き込もうとしました。
#include "key_value.h"
using namespace types;
template <class T, class U>
string key_value<T, U>::serialize()
{
// Code here returning string
}
エラーで終わった:Redefinition of 'serialize'
これを行う適切な方法はどのようですか?