Avatar billede evilfish Nybegynder
10. november 2008 - 12:42 Der er 5 kommentarer og
1 løsning

Nedarvnings functioner i c++ bliver ikke kaldt korrekt

Hej eksperter

Jeg har et nedarvnings problem. Jeg har lavet en klasse med nogle funktioner. De er defineret i en H fil, og inplementeret i en cc fil.

Et eksempel (som er den metode jeg dubugger på og får fejlen på) kunne være denne metode:

void MeasureFunction::setTriggerCount(double value)
{
    if (0 < value)
    {

    }
    triggerCount == value;
} <--- DEBUGGEREN STARTER/STOPPER HER

Den er defineret i h filen, under public:

void setTriggerCount(double value);

Jeg har lavet den tomme if statement til at fange debuggeren før den rammer selve værdi overførslen. Som I nok kan læse har jeg skrevet en debugger kommentar i metoden. Når jeg debugger og går ind i metoden starter den ikke fra toppen, men hopper direkte ned til udgangen af metoden. Jeg forstår ikke helt hvorfor den gør dette.

Nogen der har en svar på dette problem?
Avatar billede evilfish Nybegynder
10. november 2008 - 12:44 #1
Hov - Det skal lige sige jeg nedarver fra MeasureFunction. Så når jeg forsøger at gå ind i metoden fra den klasse der nedarver metoden så får jeg fejlen.
Avatar billede segmose Nybegynder
10. november 2008 - 13:57 #2
hvis du ikke gør noget i din if bliver det nok bare optimeret væk.

triggerCount == value; // <--- Mener du det eller mener du

triggerCount = value;
Avatar billede segmose Nybegynder
10. november 2008 - 14:00 #3
Har du:

class DinClass : public MeasureFunction {

};

DinClass instance;
og senere kalder du

instance.setTriggerCount(17);
Avatar billede evilfish Nybegynder
10. november 2008 - 14:01 #4
Det var == jeg havde stirret mig blind på. Tak for det. Dum fejl
Avatar billede segmose Nybegynder
10. november 2008 - 14:31 #5
Din compiler burde have advaret dig med en warning.
Avatar billede evilfish Nybegynder
10. november 2008 - 15:22 #6
Ja - det burde den
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester