Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
Unde e recomandat sa ma cazez in ...

Descarcator de supratensiune tip 2

ping digi?

Reparare "șanțuri&#...
 De ce i se zice Mariei "Stapa...

Colet valoare Londra București

BMW seria 3 rulat vs SsangYong Ko...

Share abonament Netflix
 Cum pot sa fac rost de un negativ...

Lant Bicicleta

Un designer artist: Raymond Loewy

ATS din contactor modular
 Parere apartament ~150k

Limitare la 100mb/s

Altercație

Cartonașe și stickere t...
 

Eroare compilare: min max minmax

- - - - -
  • Please log in to reply
5 replies to this topic

#1
bizpenet

bizpenet

    Junior Member

  • Grup: Members
  • Posts: 191
  • Înscris: 20.03.2006
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
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,297
  • Înscris: 06.01.2007
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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,254
  • Înscris: 24.02.2007
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
bizpenet

bizpenet

    Junior Member

  • Grup: Members
  • Posts: 191
  • Înscris: 20.03.2006

 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
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,254
  • Înscris: 24.02.2007
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
maccip

maccip

    46 ani

  • Grup: Senior Members
  • Posts: 33,297
  • Înscris: 06.01.2007
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

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate