View Single Post
Old 18-09-2010, 07:59   #7
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da pixie Guarda i messaggi
Sisisi Tomminno scusa... gli atoi sono dentro a un metodo nel campo public... scusa non mi sono accorto dell'errore
Ci sarebbe da dire che "public" non è un campo, e che non basta che siano inizializzati in un metodo, ma è necessario che siano inizializzati in un costruttore (che poi questo sia pubblico o meno non è rilevante).

Ad esempio:

Codice:
#include <iostream>
#include <string.h>

class Oggetto {
    private:
        char* m_str;

    public:
        Oggetto()
        {}

        ~Oggetto()
        {
            delete[] m_str;
        }

        void initialize()
        {
            m_str = new char[1024];
        }

        unsigned int getLength()
        {
            return strlen(m_str);
        }
};

int main()
{
    Oggetto obj;
    std::cout << obj.getLength() << std::endl;
}
questo codice ti darebbe un segmentation fault, visto che utilizzi in getLength() un puntatore che non è stato inizializzato. Ciò ti darebbe problemi anche con il solo distruttore, che cercherebbe di cancellare una zona di memoria mai allocata.
Invece:

Codice:
#include <iostream>
#include <stdlib.h>
#include <string.h>

class Oggetto {
    private:
        char* m_str;

    public:
        Oggetto()
        {
            m_str = new char[1024];
        }

        ~Oggetto()
        {
            delete[] m_str;
        }

        unsigned int getLength()
        {
            return strlen(m_str);
        }
};

int main()
{
    Oggetto obj;
    std::cout << obj.getLength() << std::endl;
}
questo codice sicuramente farà ciò che ti aspetti (proprio visto che m_str viene inizializzato nel costruttore, e quindi sarà immediatamente disponibile quando usi qualche metodo dell'oggetto).

ciao
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso