Prima di tutto, questo codice non verrà compilato perché si è dimenticato i punti e virgola dopo ogni dichiarazione di variabile membro e dopo MyItem
dichiarazione e la parola chiave "struct" è stato errato. Il codice dovrebbe essere simile a questa:
struct MyItem
{
var value;
MyItem* nextItem;
};
MyItem item = new MyItem;
Ora rispondere alla tua domanda, questo codice non funziona perché l'operatore new restituisce un puntatore all'oggetto creato (un valore di tipo MyItem*
) e si sta tentando di assegnare questo puntatore a una variabile di tipo MyItem
. Il compilatore non ti permette di farlo (perché il valore e la variabile hanno tipi diversi). È necessario memorizzare il puntatore in una variabile apropriate, in questo modo:
MyItem* item = new MyItem;
In questo caso, è necessario ricordarsi di delete item
per evitare perdita di memoria una volta che non è più necessario.
In alternativa, è possibile creare l'oggetto nello stack senza l'operatore new
.
MyItem item;
In questo caso, l'oggetto cessa di esistere al ritorno della funzione; non è necessario ricordarsi di eliminarlo.
fonte
2012-08-22 13:30:12
Ho provato * articolo. pensa lo spazio tra le cose?I server Linux si sono bloccati e dovrò aspettare che tornino prima che io possa provarlo con lo spazio tra * e l'elemento. – kralco626
@kralco: No, non importa. Hai un libro introduttivo in C++? – GManNickG
No. Sto prendendo una classe di sistemi operativi. Ho preso un sacco di lezioni di programmazione in Java e ho usato C# e sono ancora molto al lavoro. tuttavia nessuna di queste lingue usa puntatori come C/C++. Questo è solo parte di un progetto più ampio con l'implementazione di un programma che esegue il pipelining, (anche se Linux lo ha integrato). ho scritto tutto e ottengo solo questo errore. – kralco626