30/12/09 17:01
XBarboX
Nooooo il super cazziatone da parte del linker non lo voglio! Seguirò i tuoi consigli..
Cmq è proprio obbligatorio creare il file .h o basta mettere semplicemente l'implementazione dei metodi già nel file .cpp?
aaa
30/12/09 18:52
Lawliet
Allora non hai capito niente di ciò che abbiamo detto finora?
Ciò che ho detto io (in parole poverissime) e dopo ti ha illustrato TheKaneB tutto ciò che bisogna fare per praticare una buona programmazione.
Risottolineo:
Postato originariamente da TheKaneB:
si DEVE separare il prototipo (nell'header .h) dall'implementazione (nel codice .cpp).
MOTIVO:
Se non vengono separati, si ottiene una duplicazione del codice quanto includi lo stesso header in due diversi file del progetto con conseguente super cazziatone da parte del linker.
// MiaClasse.h
// questo #pragma indica al compilatore di non duplicare questa inclusione, per evitare ridefinizioni fastidiose
#pragma once
class MiaClasse
{
public:
MiaClasse(); // Costruttore
~MiaClasse(); // Distruttore
int GetChupaCabra(); // Un metodo getter qualsiasi
void SetChupaCabra(int value); // Un metodo setter qualsiasi
private:
int m_chupaCabra; // Una variabile privata
};
poi si crea l'implementazione della classe su un file separato:
// MiaClasse.cpp
// Richiamo i prototipi definiti nell'header e li implemento
#include "MiaClasse.h"
// Il costruttore...
MiaClasse::MiaClasse()
{
m_chupaCabra = 0;
}
// ... e suo cugino
MiaClasse::~MiaClasse()
{
// non faccio nulla
}
// I metodi get e set per la variabile privata (questo si chiama "incapsulamento" ragazzo!)
void MiaClasse::SetChupaCabra(int value)
{
m_chupaCabra = value;
}
int MiaClasse::GetChupaCabra()
{
return m_chupaCabra;
}
L'esempio che ti ha fatto è ciò che devi fare se vuoi creare una tua libreria.
Nel main, poi se vuoi utilizzare chiami allora la #include "libreriachetiserve.h"
Ah.. e ricorda, nel main o meglio fuori dalla libreria .cpp non puoi utilizzare le variabili e/o funzioni private.
Per capire meglio il concetto ti consiglio di studiare il principio di modularizzazione per le funzioni e classi.
gcc -o cabron.bin MiaClasse.cpp main.cpp
Pss... TheKaneB.. ma lo sai che significa cabron? Chi sa lo spagnolo può sentirsi offeso! ghghgh
Ultima modifica effettuata da Lawliet 30/12/09 18:54
aaa
31/12/09 7:58
XBarboX
allora il .h è obbligatorio... ok grazie.
"Ah.. e ricorda, nel main o meglio fuori dalla libreria .cpp non puoi utilizzare le variabili e/o funzioni private. " bhe questo è ovvio... XD
aaa