@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
Kopiuj
#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()
{
}
Kopiuj
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