Compilerfehler.. bin überfragt..
-
Im Konstruktor von CHandlerOperUnit:
CHandlerOperUnit(const CHandlerInstruction &oPrev,double dDur) : CHandlerInstruction( oPrev.GetDestMod(), oPrev.GetDestMod(), oPrev.GetFlags(), oPrev.GetSta()+oPrev.GetDur(), dDur){ BYTE o= oPrev.GetFlags(); //FEHLERFehler: c:\test\AllocStruct\Handling.h(88): error C2662: 'CHandling::CHandlerInstruction::GetFlags' : cannot convert 'this' pointer from 'const CHandling::CHandlerInstruction' to 'CHandling::CHandlerInstruction &'
funktion Getflags sieht so aus
const BYTE& CHandlerInstruction::GetFlags() { return m_bEndStateFlags; }
-
hi
const BYTE& und BYTE o.. sind nicht dasselbe, das sagt dir ja der compiler.
zurück kommt eben ein konstantes objekt (wert..)const BYTE &: das worauf du die Referenz legst, ist konstant.
-
wenn ich es so mache:
const BYTE o= oPrev.GetFlags();kommt die selbe fehlermeldung
-
hmm... wenn ich das "const" bei CHandlerInstruction &oPrev entferne ist der fehler weg aber wieso?
void dummy(const CHandlerInstruction &oPrev){ //Hier ist das oPrev objekt konstant, als dasf ich es nich ändern BYTE o = oPrev.GetFlags(); //FEHLER .. aber ich ändere ja nichts ich lese nur ein wert von oPrev Objekt }ich werd aus dem const kram nich schlau....
-
ein konstantes objekt darf nur mit konstanten funktionen lesen (meinte ich)..
-
nur wenns das nun ist..
class A { int x; public: int test () const { return x; } }; int main () { A a; const A & myA=a; int z=myA.test(); }ohne gewähr, eben hingeschrieben.. (muss eigentlich wech)
-
ahh.. danke;) jetzt funzt es soweit
-
ja nun frage ich mich ob man die Get Methoden immer const macht?
-
BorisDieKlinge schrieb:
ja nun frage ich mich ob man die Get Methoden immer const macht?
Joa
Schließlich sollte eine get-Methode immer nur einen Wert zurückliefern und nichts am Objekt ändern, also ein const hinter die Funktion.
-
Tjo ... solltest dir evtl. was über const-correctnes durchlesen ... getter sollten konstante Werte zurückgeben ... und die Funktion sollte demnach auch konstant sein.