Försöker inherit en klass Country utan template som base, till en annan klass Scandinavia som har template<class T>. Får ett konstigt felmeddelande som inte hjälper mig lösa problemet. Har provat hitta på nätet, men hittade inget som gjorde att man kunde förstå.
Någon som vet vad som är fel?
Felmeddelende (Visual Studio)
.h-fil
.cpp-fil
main.cpp-fil
Någon som vet vad som är fel?
Felmeddelende (Visual Studio)
Citat:
Severity Code Description Project File Line Suppression State
Error LNK2005 "public: __thiscall Country::Country(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Country@@QAE@V?$basic_string@DU?$char_traits@D @std@@V?$allocator@D@2@@std@@@Z) already defined in main.obj Kuk C:\Users\******\Desktop\Kuk\Kuk\Kuk\test.obj 1
Error LNK2005 "public: __thiscall Country::Country(class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >)" (??0Country@@QAE@V?$basic_string@DU?$char_traits@D @std@@V?$allocator@D@2@@std@@@Z) already defined in main.obj Kuk C:\Users\******\Desktop\Kuk\Kuk\Kuk\test.obj 1
.h-fil
Kod:
#pragma once #include <string> #include <iostream> #include <cstdlib> using namespace std; class Country { private: string name; public: Country(); Country(string s); string getName() const; void setName(string s); virtual void printClass(); }; template <class T> class Scandinavia : public Country { private: T population; public: Scandinavia(); Scandinavia(T p); Scandinavia(string n, T p); Scandinavia(string n); void printClass(); };
.cpp-fil
Kod:
#include "test.h" void Country::printClass() { cout << "Country class. Name: " << getName() << endl; } Country::Country() { setName("Unknown"); } Country::Country(string s) { setName(s); } string Country::getName() const { return name; } void Country::setName(string s) { name = s; } template <class T> Scandinavia<T>::Scandinavia() :Country() { population = NULL; } template <class T> Scandinavia<T>::Scandinavia(T p) { population = p; } template <class T> Scandinavia<T>::Scandinavia(string n) : Country(n) { population = NULL; } template <class T> Scandinavia<T>::Scandinavia(string n, T p) : Country(n) { population = p; } template <class T> void Scandinavia<T>::printClass() { cout << "Scandinavia class. Name: " << getName() << " Population: " << population << endl; }
main.cpp-fil
Kod:
#include "test.h" int main() { Scandinavia <int> Sverige("Sweden"); Sverige.printClass(); system("PAUSE"); return 0; }
__________________
Senast redigerad av karatekungen 2017-05-16 kl. 11:29.
Senast redigerad av karatekungen 2017-05-16 kl. 11:29.