@spartanPAGE
Klasa zawiera kilka metod, z których tylko dwie Load
oraz Save
będą się różnić w zależności od typu.
Jeśli przy specjalizacji klasy wystarczy zmienić te dwie metody, a pozostałe zostaną użyte z wersji dla class T
, to jest to czego szukam, jednak jeśli będę musiał skopiować pozostałe metody, które są niezależne od typu to nie będzie to odpowiednie rozwiązanie.
Odnośnie drugiej wersji dla std::vector<int>
, nie miałem pomysłu jak zrobić to dla vectora dowolnego typu, więc wybrałem int, którego obecnie potrzebowałem, a w przyszłości rozszerzyłbym to o inne typy.
@twonek
#pragma once
#include "Globals.h"
template<class T> class ConfigFile
{
std::string fileName;
std::vector<std::pair<std::string, T>> values;
void Load()
{
}
public:
void ConfigFile<T>::Initialize(const std::string& name, const std::string& headName)
{
}
void Save();
void ConfigFile<T>::SetValue(const std::string& valueName, T value, int addValue = 0, bool search = true)
{
}
T ConfigFile<T>::GetValue(const std::string& valueName)
{
return 0;
}
};
template<class T> void ConfigFile<T>::Save()
{
}
template<> void ConfigFile<std::vector<int>>::Save()
{
}
Error LNK1169 one or more multiply defined symbols found
Error LNK2005 "public: void __thiscall ConfigFile<class std::vector<int,class std::allocator<int> > >::Save(void)" (?Save@?$ConfigFile@V?$vector@HV?$allocator@H@std@@@std@@@@QAEXXZ) already defined in Head_Logic.obj
Visual Studio 2015 Community