Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
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:
Testo quotato
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.
Codice sorgente - presumibilmente C++
// 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:
Codice sorgente - presumibilmente C++
// 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.
Testo quotato
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 il 30/12/2009 alle 19:54
Quindi io quando richiamo nel programma il prototipo della classe (file.h), questo automaticamente include anche i metodi contenuti nel file.cpp, giusto?
Però posso chiedervi di spiegarmi meglio cosa fa la riga 4: #pragma once ? Grazie
Ho appena iniziato le classi quindi ci capisco pochissimo...