ďťż

Ładny brzuch

Witam
Nigdzie nie znalazłem czegos co by mi pomogło... Teraz wysjasnie problem.
Mam taki programik:
1)
(czas.h)
#ifdef czas_h #define czas_h class czas { public: czas(); void settime(int, int, int); void showtime(); void showtimeAM(); private: int godz; int min; int sek; }; #endif
2)
(1.cpp)
#include <iostream.h> #include <time.h> #include "czas.h" int main() { czas t; cout<<"zabawa z czasem."<<endl; cout<<"wprowadzamy dane: "; srand(time(NULL)); int gg, mm, ss; gg = rand()%25-1; mm = rand()%61-1; ss = rand()%61-1; t.settime(gg, mm, ss); cout<<"\nteraz juz wartosci zostaly przekazane do funkcj wiec mozemy je odczytac.\n"; t.showtime(); cout<<"\n"; t.showtimeAM(); cout<<"\nto juz koniec..."<<endl; return 0; }
3)
(2.cpp)
#include <iostream.h> #include "czas.h" czas::czas() = { godz = min = sek = 0; } void czas::settime (int g, int m, int s) { g = (g>=0 && g<=24) ? g:0; m = (m>=0 && m<=60) ? m:0; s = (s>=0 && s<=60) ? s:0; cout<<endl; } void czas::showtime() { cout<<g<<":"<<m<<":"<<s<<endl; } void czas::showtimeAM() { int ass; char s1[] = {"AM"}; char s2[] = {"PM"}; if ( godz == 0 || godz == 12) ass = 0; if (godz >=13) ass = godz-12; cout<<ass<<":"<<min<<":"<<sek; if (godz >=13) cout<<s2; else cout<<s1; }
otóz potrzebuje skompilowac te 2 pliki z wykorzytaniem nowo utworzonej klasy. W ksiażce znalazlem ze mozna kompilowac (g++ -c 1.cpp -c 2.cpp) jednak to nie działa...
Nie działa równiez jak kazdy jest kompilowany osobno.
A w ksiazce z której ucze sie programowac napisali zebym sobie sam znalazł :( ktos ma jakis pomysł??
P.S Jesli wczesniej były takie tematy to prosiłbym linka, ja szukałem, jednak bez skutku :(
pozdrawiam
Użytkownik loopo edytował ten post 04 lipiec 2006, 16:15


Jakiego kompilatora używasz??

w 2.cpp pododawaj przed nazwami metod czas:: np.:

void czas::settime (int g, int m int s) {   ......

a skompilowac to da sie jak najbardziej


g++ 1.cpp 2.cpp -o wynik

EDIT
:D skopiowalem odrazu twoj blad, zapomniales przecinka wlasnie w tej metodzie settime ma być (int g, int m, int s), nie dziwie sie, ze sie nie kompiluje ;-)
Użytkownik icek edytował ten post 04 lipiec 2006, 12:56
mam komunikaty o błedach:
1.cpp
1) error: ‘czas’ was not declared in this scope
2) error: expected `;' before ‘t’
3) error: ‘t’ was not declared in this scope
czyli ze cos jeest nie tak z pl nagłówkowym...
2.cpp
1) ‘czas’ has not been declared
2) error: invalid type in declaration before ‘=’ token
3) error: function ‘int czas()’ is initialized like a variable
4) error: invalid pure specifier (only `= 0' is allowed) before ‘godz’czas
5) error: expected declaration before ‘}’ token
P.S poprawiłem tak jak mówiliscie...
Użytkownik loopo edytował ten post 04 lipiec 2006, 14:54


a jak
#include "czas_h"
zmienisz na
#include "czas.h"
? -_-

to było zmienione tylko zapomniałem tutaj zamienic. To raczej nie w tym jest bład,,,

czas::czas() = { godz = min = sek = 0; }=>czas::czas()  { godz = min = sek = 0; }
Nie wiem skad Ci sie tam znak rownosci wzial. -_-

na poczatku chce zadeklarowac że wszystkie wartosci mają wartosc 0, wiec zeby nie rozpisywac zapisałem tak. Jednak problem tkwi z pliku nagłówkowym.... tak jak by nie był dołączony do 2.cpp i 1.cpp... wedlug teori z ksiązek powinno wszystko grac... Jednak moze wkradł sie jakis malutki bład :(

gdyby wszystko w jednym pliku *.cpp zapisac to sie kompiluje bez problemu... Jednak mi chodzi o rozdzielenie interfejsu od implementacj...

P.S temat mozna zamnknać, na samym poczatku wkradła sie literówka dlatego nie działało :mad:
Pozdarawiam
Użytkownik loopo edytował ten post 04 lipiec 2006, 19:16
  • zanotowane.pl
  • doc.pisz.pl
  • pdf.pisz.pl
  • zsf.htw.pl
  •