Oppure

Loading
14/05/11 16:52
XBarboX
Salve,
purtroppo il mio libro sul c++ spiega come fare le classi ma non come separarle in un file a se stante.
Ho cercato su internet ma non sono riuscito a capire come dividere una classe in modo da metterla in unico file, in modo da poterla riutilizzare comodamente.
Provando ho fatto così però non so se va bene:
classe.h
class porva{
	public:
	int x;
        void metodo1();
        void metodo2();
};

prova::metodo1(){}
prova::metodo2(){}


main.cpp
#include<iostream>
#include"prova.h"
using namespace std;

int main(){
	prova p;
	return 0;
}


Tutto funziona alla grande, però ho paura che non sia il metodo corretto.
Quello che faccio è giusto o no?
grazie

p.s. ho fatto una classe più complessa e funziona benissimo, l'esempio sopra riportato è solo per fare capire come ho strutturato la classe
Ultima modifica effettuata da XBarboX 14/05/11 16:54
aaa
14/05/11 16:59
nihal
In realtà si usa mettere nel file .h la dichiarazione della classe:
class Prova
{
    public:
        void metodo1();
        void metodo2();
};

Mentre in un file .cpp separato si definiscono i metodi:
#include "prova.h"

prova::metodo1() { }
prova::metodo2() { }

E poi si usa il tutto nel main.
aaa
14/05/11 17:25
XBarboX
ma nel main devo mettere
#include"prova.h"
o
#include"prova.cpp" ?
aaa
15/05/11 7:32
Devi sempre includere l'header.
15/05/11 9:41
XBarboX
Lo pensavo anche io , però facendo questo sorgente mi da errore:
main.cpp
#include<iostream>
#include"rettangolo.h"
using namespace std;

int main(){
	rettangolo r;
	r.base = 1;
	r.altezza = 3;
	cout<<r.area()<<endl;
	return 0;
}

rettangolo.h
class rettangolo{
	public:
		int base;
		int altezza;
		int area();
};

rettangolo.cpp
#include "rettangolo.h"

int rettangolo::area(){
	return base*altezza;
}



Ecco l'errore:

enrico@ubuntu:~/src/c++$ g++ main.cpp -o main
/tmp/cc7cPgK2.o: In function `main':
main.cpp:(.text+0x21): undefined reference to `rettangolo::area()'
collect2: ld returned 1 exit status

Sembra che il file rettangolo.cpp per lui non esista...
aaa
15/05/11 10:39
carmelolg
ciao,
per buona norma le variabili potresti metterle private nella classe rettangolo.
Per quanto riguarda l'errore, la funzione area nell'header è dichiarata?
aaa
15/05/11 15:00
prova a metterci il costruttore, o ad includere il .cpp anziché il .h
15/05/11 16:12
nihal
Compila prima rettangolo.cpp e poi main.cpp
aaa