Mam jakas klase, wszystkie funkcje skladowe sa definiowane poza nia. Chcialbym aby ta klasa znajdowala sie w innym pliku niz reszta programu (z main). Jak to zrobic? Chcialbym aby funkcje skladowe rowniez byly w tym pliku. Jak potem odnosic sie do takich funkcji w pliku z kodem maina?
powiedzmy zapisujesz wszystko do pliku z rozszerzeniem h i potem tylko włączas #include "twojplik.h" (""- plik w tym samym katalogu co projekt)... np.
// kompilacja warunkowa,
//jesli plik jest juz dolaczony, nie bedzie powtornie kompilowany
#ifndef __twojplik_H
#define __twojplik_H
// powiedzmy ze pascalowe usesy
#if !defined(__STRING_H)
#include <string.h>
#endif
// powiedzmy, ze pascalowe interface (międzymordzie ;p)
class moja{
moja(){return;}; // albo tak deklarujesz metody
~moja();
};
typedef unsigned long ulong;
#define swap4(a,b) {((ulong) (a))^=((ulong) (b));((ulong) (b))^=((ulong) (a));((ulong) (a))^=((ulong) (b));}
inline ulong xorbit(ulong& buf,char bit);
// no i implementacja ...
moja::~moja(){ // albo tak
return;
}
inline ulong xorbit(ulong& buf,char bit){
return (buf^=((ulong)(1<<bit)));
}
#endif
// koniec twojplik.h
program przykład:
#include "twojplik.h"
#include <stdio.h>
int main(){
ulong a=0,b=5
xorbit(b,0);
swap4(a,b);
printf("a=%d b=%d\n",a,b); // -> a=4 b=0
return 0;
}
Ja to sobie dziele na sekcje z definicjami (forwardami tak na prawde) i sekcje z kodem, tylko po to, zeby bylo czytelniejsze, ale możesz pisac wszystko ciurkiem.
A jesli mialby to byc plik .cpp to jak mozna to zrobic? Gdzies czytalem o slowie kluczowym extern ale nie wiem kiedy i jak go uzywac. Dzieki za wszelka pomoc!
A co za różnica jak sobie nazwiesz plik (twojplik.ala.ma.kota, a potem #include "twojplik.ala.ma.kota") ? I tek musisz uzyc includa... exporty sa potrzebne, ale do tworzenia dll-ek (chyba ;p)
// http://4programmers.net/view_file.php?id=1447 Lepszego przykładu ci nie dam... f_ini.h to plik ze zdefiniowana jedną jedyna klasą.