Witam. Mam strukturę pudelko i moim zadaniem jest napisanie specjalizacji szablonu, która będzie pobierała dwa parametry typu pudelko i zwracała jeden obiekt pudelko o większej pojemności. I teraz:
#include <iostream>
//using namespace std;
struct pudelko
{
char producent[40];
float pojemnosc;
};
pudelko a{"zoliborz",18},b{"mank",12};
template <typename T>
T maks(T para,T parb)
{
return para<parb?parb:para;
}
template<>pudelko & maks<pudelko>(const pudelko & a,const pudelko & b)
{
std::cout<<"Wyspecjalizowana"<<std::endl;``
return a.pojemnosc<b.pojemnosc? b:a;
}
int main()
{
//Pytanie 8
pudelko nowa;
nowa=maks(a,b);
std::cout<<"Pojemnosc: "<<nowa.pojemnosc<<std::endl;
system("pause");
return 0;
}
jeśli usunę referencje z szablonu - kod się kompiluje i wyświetla poprawną wartość, natomiast w takiej formie jak teraz pojawiają się błedy:
error: template-id 'maks<pudelko>' for 'pudelko& maks(const pudelko&, const pudelko&)' does not match any template declaration|
error: no match for 'operator<' (operand types are 'pudelko' and 'pudelko')|
Pewnie problem leży w moim niepełnym zrozumieniu zagadnień związanych z szablonami (dopiero się ucze C++), ale znalazłaby się jakaś dobra dusza, która powiedziałaby mi co robię źle?