Toon posts:

[C++] error: non-lvalue in assignment

Pagina: 1
Acties:

Verwijderd

Topicstarter
We proberen in een bestaande functie een tweede parameter mee te geven, naast parameter datum die er al was een string (naam). we krijgen echter elke keer deze error bij het compileren:

code:
1
2
3
sale.cpp: In member function `float Sale::calculatePrice(QTime, QString)':
sale.cpp:33: error: non-lvalue in assignment
make: *** [sale.o] Error 1


De naam wordt alsvolgt verkregen:
code:
1
QString name = Rekhdr::currentSelectedClient->getName();


Functie calculatePrice:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
float Sale::calculatePrice(QTime time, QString name) { 
   Price *p = Rekhdr::dbm.getPrice(evening, product);
   float temp;
   if (p == NULL || name = "Eennaam")
      temp = 0;
   else {
      if (time >= Rekhdr::settings->startReduce && time <= Rekhdr::settings->endReduce)
        temp = p->getReducedPrice();
     else
        temp = p->getPrice();
   }
   return amount * temp;
}

Search op google en GoT leverde bij het zoeken op deze error nog niks op...

[ Voor 4% gewijzigd door Verwijderd op 12-04-2005 16:01 ]


  • Radiant
  • Registratie: Juli 2003
  • Niet online

Radiant

Certified MS Bob Administrator

Waar is regel 33? Moet je op regel 4 van je laatste code block niet == doen? (maar dat mag niet, dus !strcmp(name, "Eennaam"))

Verwijderd

Topicstarter
Regel 33 is regel 4 van het laatste codeblock. '=' moet natuurlijk '==' zijn, en strcmp wordt nu getest...

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

= heeft een lagere precedence dan ||, dus wat er staat is:
C++:
1
if (((p == NULL) || name) = "Eennaam")

You do the math ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Verwijderd

Topicstarter
Gelukkig werkt het al met strcmp. Bedankt!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 04:30

.oisyn

Moderator Devschuur®

Demotivational Speaker

Radiant schreef op dinsdag 12 april 2005 @ 16:04:
Waar is regel 33? Moet je op regel 4 van je laatste code block niet == doen? (maar dat mag niet, dus !strcmp(name, "Eennaam"))
Het is een QString, dus waarom zou == niet werken :?
Er bestaat gewoon een
C++:
1
bool operator == (const QString & s1, const char * s2)
hoor...

[ Voor 16% gewijzigd door .oisyn op 12-04-2005 16:39 ]

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


  • MSalters
  • Registratie: Juni 2001
  • Laatst online: 09-04 22:08
Klopt, en anders zou een operator==(QString,QString) ook nog werken (wegens impliciete "string"->QString conversie)

Man hopes. Genius creates. Ralph Waldo Emerson
Never worry about theory as long as the machinery does what it's supposed to do. R. A. Heinlein

Pagina: 1