09. november 2002 - 13:51Der er
7 kommentarer og 1 løsning
Fejl, hvorfor?
Hejsa...
Når jeg kører en exe fil med flg. indhold får jeg en "Klasser.exe har fundet en fejl og afsluttes. Vi beklager udlejligheden." fejl. Det mærkelige er at jeg ikke får hverken compiler fejl eller linking fejl (det er i VC++), men det virker fint i Dev-C++ med samme kode:
#include <iostream> #include <string> using namespace std;
class Hund { public:
int SaetAlder(int alder); int HentAlder(); string SaetFarve(string farve); string HentFarve();
private:
unsigned int densAlder; string densFarve; };
int Hund::SaetAlder(int alder) { densAlder = alder; return 0; }
Det er dette den siger når jeg fjerner de 2 dumme return linier:
C:\Documents and Settings\Larsen\Skrivebord\StuFF\C++\Ny\Klasser\Klasser.cpp(23) : error C4716: 'Hund::SaetAlder' : must return a value C:\Documents and Settings\Larsen\Skrivebord\StuFF\C++\Ny\Klasser\Klasser.cpp(28) : error C4716: 'Hund::SaetFarve' : must return a value
det er nok fordi de ikke har implementeret compileren på samme måde. jeg er egentlig ikke klar over hvad standarden siger på det område. men umiddelbart plejer det at være gcc (altså den der følger med dev-cpp) der følger standarden mest.
I de fleste compilerer er 0 synonymt med NULL (en int = 0) - og det er i disse compilere OK at returnere en NULL pointer i stf. en string.
Som ovenfor skrevet, bør dine setters ikke returnere noget - andet end f.eks. en bool, som så angiver om dit set er gennemført eller ej. (F.eks. hvis setteren indeholder noget valideringslogik, der sikrer en gyldig værdi - så nagiver returneret true at værdien var OK og er ændret - false at værdien ikke var ok.
Synes godt om
Ny brugerNybegynder
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.