kaos i mine første c++ klasser

Tags:    c++ programmering

Jeg har ikke nogen solid idé om, hvad der går galt, og jeg håber at få noget input fra jer. Der er en massive række fejl-noteringer .. men nogle af dem synes helt hen i vejret.
Koden hører til i Arduino sammenhæng og er skrevet i notepad.
.h og .cpp er anbragt så Arduino-IDE'en finder dem og kompilerer, så fejlkoderne har jeg fra IDE'en.

Fejlkoder:

Fold kodeboks ind/udKode 


kode:
Fold kodeboks ind/udC++ kode 


Det er ikke al koden der er med, men der er rigeligt at kigge på. Nogle funktioner er ret uskønne, men lige nu er det syntax og nogle overordnede ting der skal på plads.
Jeg har prøvet at undgå direkte kontakt med Arrays og lavet en 'wrapper' .. og jeg er helt sneget udenom referencer og pointers.



2 svar postet i denne tråd vises herunder
1 indlæg har modtaget i alt 4 karma
Sorter efter stemmer Sorter efter dato
Tja...det er jo svært at compile din kode, hvis ikke vi har det hele, og dit compiler output er jo svær at sammenholde, når linjenumrerne ikke passer med din pastede kode.

Men her er da lidt, som er ret gennemgående.
Når du tager et objekt som parameter sådan her:
Fold kodeboks ind/udKode 


..så får du en KOPI af objektet med, og den kopi skal instantieres med en default constructor...altså en constructor, som ikke tager parametre. Det er nok ikke dét du vil, så enten skal argumentet være to pointere til cStepper objekter, eller også skal du tage en reference til objekterne. Altså enten:
Fold kodeboks ind/udKode 


eller
Fold kodeboks ind/udKode 


Det problem har du flere steder.



Hej Robert.
Tak fordi du gider kigge på det.
Tja...det er jo svært at compile din kode, hvis ikke vi har det hele, og dit compiler output er jo svær at sammenholde, når linjenumrerne ikke passer med din pastede kode.

Jeg har haft koden inde i visual studio, men det bliver noget rod fordi arduino-delen skal pilles ud før det har mulighed for at kompilere. Og så er der bool/boolean der skal ændres.

Men her er da lidt, som er ret gennemgående.
Når du tager et objekt som parameter sådan her:
Fold kodeboks ind/udKode 

..så får du en KOPI af objektet med,


Ja .. jeg har prøvet at gennemskue dét med at lave en ref, men ikke særlig stædigt. De to 'lokale' steppere (ewX og nsX) skal associeres med/tilforordnes til konstruktorens steppere .. har det osse sin egen syntax?.. og har det sin egen syntax senere når jeg bruger ref'erne?
Fordi der ikke er behov for 'performance' har jeg håbet at jeg kunne starte med 'pass by value'. Burde det såvidt ikke fungere, selv om det er dårlig kode?


og den kopi skal instantieres med en default constructor...altså en constructor, som ikke tager parametre.


Jeg har antaget at 'default konstruktor' er implicit til stede. Det er ikke som sådan noget problem at skrotte konstruktoren og lave to 'void setStepper(int,int,int,int,int,int){}' i stedet for, men det løser måske ikke problemet med at kunne referere til stepperne senere.


Det er nok ikke dét du vil, så enten skal argumentet være to pointere til cStepper objekter, eller også skal du tage en reference til objekterne. Altså enten:
Fold kodeboks ind/udKode 


eller
Fold kodeboks ind/udKode 


Det problem har du flere steder.


Hvis jeg kan lære ref-syntaxen, så kan pointer komme senere.

Hvis du kigger på klassen cPoints .. så er det en hurtig løsning på at lave 'noget' der syntaktisk ligner noget jeg kender. Altså
myArray.Add( myPoint ) og myPoint = myArray(index). Jeg håber at jeg ikke har nødig at lave en 'fixed-size' array for at få det til at køre. Alle andre sprog har en anden måde at instantiere arrays på end c++ og jeg forventer fejl dér.

Mit udgangspunkt har iøvrigt været:
http://arduino.cc/it/Hacking/LibraryTutorial
... så befriende enkelt ..

Fold kodeboks ind/udC++ kode 




t