Gjest Slettet+142 Skrevet 17. oktober 2006 Rapporter Del Skrevet 17. oktober 2006 (endret) hey holder på å lese en bok (Programmering i C++, TISIP). har komt til kapittel 10, altså OOP. har skrevet inn 2 ferdige koder fra boken, men når eg prøver å gjøre en oppgave som går ut på å utvide klassen med å legge til finnKontonr() og settKontonr() og private kontonr; , får eg feilmelding 28 C:\Documents and Settings\marius\Skrivebord\cpp\programliste\klasse\konto_t.cpp integer constant is too large for "long" type konto.cpp: Skjult tekst: (Marker innholdet i feltet for å se teksten): // // konto.cpp // Min første klasse @ Page 311 // programliste 10-1 og 10-2 // class Konto { public: void settSaldo(double nySaldo); void settGrense(double nyGrense); void settKontonr(unsigned long int kontonr); double finnSaldo() const; double finnGrense() const; double finnDisponibelt() const; unsigned long int finnKontonr() const; void innskudd(double beleop); bool uttakOK(double beleop); private: double grense; double saldo; unsigned long int kontonr; }; // ------------------------------------------------------------------ void Konto::settSaldo(double nySaldo){ saldo = nySaldo; } // ------------------------------------------------------------------ void Konto::settGrense(double nyGrense){ grense = nyGrense; } // ------------------------------------------------------------------ void Konto::settKontonr(unsigned long int kontonr){ kontonr = kontonr; } // ------------------------------------------------------------------ double Konto::finnSaldo() const{ return saldo; } // ------------------------------------------------------------------ double Konto::finnGrense() const{ return grense; } // ------------------------------------------------------------------ double Konto::finnDisponibelt() const{ return grense + saldo; } // ------------------------------------------------------------------ unsigned long int Konto::finnKontonr() const{ return kontonr; } // ------------------------------------------------------------------ void Konto::innskudd(double beleop){ saldo+=beleop; } // ------------------------------------------------------------------ bool Konto::uttakOK(double beleop){ if(saldo+grense < beleop){ return false; }else{ saldo-=beleop; return true; } } // ------------------------------------------------------------------ konto_t.cpp: Skjult tekst: (Marker innholdet i feltet for å se teksten): // // test av funksjon konto.cpp // #include <string> #include <iostream> #include <cstdlib> #include <fstream> #include <cmath> #include <ctime> #include <iomanip> #include <cctype> #include <sstream> #include <time.h> #include <windows.h> #include "konto.cpp" using namespace std; int main(){ Konto konto1; konto1.settSaldo(1000.0); konto1.settGrense(5000); konto1.innskudd(4000.0); konto1.uttakOK(200.0); konto1.settKontonr(36245564177); cout << "Saldoen er " << konto1.finnSaldo() << endl; cout << "Kredittgrensen er " << konto1.finnGrense() << endl; cout << "Disponibelt beleop er " << konto1.finnDisponibelt() << endl; cout << "Ditt kontonr. er " << konto1.finnKontonr() << endl; if(!konto1.uttakOK(10000.0)) cout << "!! For stort uttak !!" << endl; cout << endl; system("pause"); return 0; } noen som ser hva det er som skaper feilmelding? Endret 17. oktober 2006 av Slettet+142 Lenke til kommentar
kjetil7 Skrevet 17. oktober 2006 Rapporter Del Skrevet 17. oktober 2006 Konstanten du skrev inn på linje 28 er for stor for datatypen du spesifiserte. Prøv å lage en long long eller en unsigned type som unsigned long. De fleste kompilatorer bruker også en ymse postfiks på store konstanter. Eks. long long myBigInt = 36245564177LL; Lenke til kommentar
Gjest Slettet+142 Skrevet 17. oktober 2006 Rapporter Del Skrevet 17. oktober 2006 (endret) Konstanten du skrev inn på linje 28 er for stor for datatypen du spesifiserte. Prøv å lage en long long eller en unsigned type som unsigned long. De fleste kompilatorer bruker også en ymse postfiks på store konstanter. Eks. long long myBigInt = 36245564177LL; 7093061[/snapback] det virket! tusen takk for hjelp Endret 17. oktober 2006 av Slettet+142 Lenke til kommentar
lnostdal Skrevet 17. oktober 2006 Rapporter Del Skrevet 17. oktober 2006 (endret) Ønsker å kommentere et par ting. Når man poster kode i forum gjør man gjerne mest mulig for å isolere hvor problemet oppstår slik at de som skal hjelpe ikke må parse en masse ikke-relevant informasjon. I ditt tilfelle noe slikt: #include <iostream> using namespace std; void accountNumber(unsigned long int account_number) { cout << "account_number: " << account_number << endl; } int main(int argc, char* argv[], char* env[]) { accountNumber(36245564177); // blah.cpp:14 return 0; } lars@ibmr52:~/programming/c$ g++ -Wall -g blah.cpp -o blah && ./blah blah.cpp:14: error: integer constant is too large for ‘long’ type (legg merke til at jeg tar med linjenummer som kommentar også) ..ok, vel.. Stol på kompileren, forstå engelsk og det den forsøker å fortelle deg. Den "tuller ikke" eller "babbler" slik som andre feilmeldinger ofte gjør i Windows. meldingen: "integer constant is too large for "long" type" konto1.settKontonr(36245564177); <== "integer constant" void settKontonr(unsigned long int kontonr); <== "long type" kjetil7 har allerede postet løsningen: #include <iostream> using namespace std; void accountNumber(unsigned long long account_number) { cout << "account_number: " << account_number << endl; } int main(int argc, char* argv[], char* env[]) { accountNumber(36245564177LL); return 0; } lars@ibmr52:~/programming/c$ g++ -Wall -g blah.cpp -o blah && ./blah account_number: 36245564177 edit: Dette er litt av grunnen til at det er lurt å kunne engelsk og bruke engelske bøker når man driver med programmering. (hva er "integer"? .. hva er "constant"?) edit2: Nevne også at det som regel kun er den første eller de to første meldingene fra kompileren man bør konsentrere seg om; resten er ofte følgefeil. Endret 17. oktober 2006 av lnostdal Lenke til kommentar
Gjest Slettet+142 Skrevet 17. oktober 2006 Rapporter Del Skrevet 17. oktober 2006 (endret) weee tusen takk for hjelp begge to... og.. det som du nevnte lnostdal; skal tenke _mye_ mer på det neste gang. er ikke så vant til å poste bl.a her i C++-kategorien takk for at du nevnte/kommenterte det Endret 17. oktober 2006 av Slettet+142 Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå