Voglio usare una semplice struct con variabili membro denominate start
e end
in un modello di funzione:"fine" non è possibile utilizzare in funzione template
#include <iostream>
using namespace std;
struct st {
int start;
int end;
};
template<typename T>
void compare(const T& v1, const T& v2){
if(v1.end < v2.end)
cout << "v1 < v2" << endl;
}
int main() {
st a = {1, 2};
st b = {2, 3};
compare(a, b);
return 0;
}
Ma questo programma non riesce a compilare su mingw g ++ 4.8.2 con :
main.cpp: In function 'void compare(const T&, const T&)':
main.cpp:11:11: error: parse error in template argument list
if(v1.end < v2.end)
^
main.cpp: In instantiation of 'void compare(const T&, const T&) [with T = st]':
main.cpp:18:17: required from here
main.cpp:11:5: error: 'end' is not a member template function
if(v1.end < v2.end)
^
Perché no? Cosa c'è che non va nel mio codice?
qual è l'esatto messaggio di errore? A proposito, il tipo di test non è definito da nessuna parte. – billz
1.La riga "Test test" deve essere eliminata e dimenticata. Voglio un mini-codice da leggere. 2. il messaggio di errore è: test.cpp: nella funzione membro 'void compare (const T &, const T &)': test.cpp: 14: 15: errore: errore di analisi nell'elenco degli argomenti del modello if (v1.end < v2.end) – xiao
Quale compilatore? – 0x499602D2