Eroare compilare: min max minmax
Last Updated: Jan 13 2019 21:33, Started by
bizpenet
, Jan 12 2019 23:43
·
0
#1
Posted 12 January 2019 - 23:43
Buna ziua
In stl.h am: template <typename T> T MIN(T a, T b) { return a < b ? a : b; } template <typename T> T MAX(T a, T b) { return a > b ? a : b; } template <typename T> T MINMAX(T min, T value, T max) { T tv; tv = (min > value ? min : value); return (max < tv) ? max : tv; } Folosesc GNU Make 4.2.1, nu pot compila pentru ca: stl.h:100:32: error: expected ')' before 'a' template <typename T> T MIN(T a, T b) respectiv stl.h:105:32: error: expected ')' before 'a' template <typename T> T MAX(T a, T b) Nu reusesc sa modific acest cod, rog pe cineva sa o faca. Multumesc frumos. |
#2
Posted 13 January 2019 - 00:21
Codul pare corect, stiu ca compilatoarele dadeau erori mai ciudate cand foloseai template de template sau alte constructii.
Insa n-am mai programat de mult in C++, nu mai stiu ce fac compilatoarele acum. Ca o prima observatie, ar trebui sa folosesti const T& in loc de T pentru a evita copierea in cazul in care compari obiecte mari cu operatorul < sau > overloadat. Dar nu stiu daca-ti rezolva problema, probabbil ca nu. Cred ca eroarea e in alta parte (intr-un *.cpp, nu *.h) si-ti raporteaza compilatorul gresit. Edited by maccip, 13 January 2019 - 00:22. |
#3
Posted 13 January 2019 - 10:56
GNU Make nu e compilator, e un coordonator ce imparte comenzi in stanga si-n dreapta. Ce compilator folosesti defapt?
Codul compileaza: https://godbolt.org/z/FQFlKS |
#4
Posted 13 January 2019 - 14:29
dani.user, on 13 ianuarie 2019 - 10:56, said:
GNU Make nu e compilator, e un coordonator ce imparte comenzi in stanga si-n dreapta. Ce compilator folosesti defapt? Codul compileaza: https://godbolt.org/z/FQFlKS CC = g++49 |
#5
Posted 13 January 2019 - 14:53
Merge si cu 4.9.
MIN/MAX mai apar definite prin macro-uri caz in care te-ar incurca. Incearca sa le scrii cu litera mica. Edited by dani.user, 13 January 2019 - 14:56. |
#6
Posted 13 January 2019 - 21:33
Faptul ca nu da aceiasi eroare la MINMAX ci doar la MIN sau MAX, ma face sa cred ca @dani a ghicit problema.
Poti incerca cu #ifdef, erau niste directive sa te ajute. Eu am avut in cap o alta situatie pe vremea cand faceam un program cu matrici<T>, unde T putea sa fie atat int/double, dar si Submatrice<matrice<T> >. La un moment dat aveam o eroare din asta dubioasa pe care n-am putut-o rezolva, dar am reusit s-o izolez, era intr-adevar o eroare de compilator. Intre timp or mai fi evoluat compilatoarele, mai ales pe partea de template unde C++ statea foarte prost. |
Anunturi
Bun venit pe Forumul Softpedia!
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users