Tout d'abord, ce code ne compile pas parce que vous avez oublié les points-virgules après chaque déclaration de variable membre et après MyItem
déclaration et le mot-clé « struct » est mal typé. Votre code devrait ressembler à ceci:
struct MyItem
{
var value;
MyItem* nextItem;
};
MyItem item = new MyItem;
maintenant répondre à votre question, ce code ne fonctionne pas parce que le nouvel opérateur renvoie un pointeur sur l'objet créé (une valeur de type MyItem*
) et que vous essayez d'attribuer ce pointeur à une variable de type MyItem
. Le compilateur ne vous permet pas de faire cela (parce que la valeur et la variable ont des types différents). Vous devez stocker le pointeur dans une variable winrar, comme ceci:
MyItem* item = new MyItem;
Dans ce cas, vous devez vous rappeler de delete item
pour éviter la fuite de la mémoire une fois que vous ne avez besoin.
Vous pouvez également créer l'objet dans la pile sans l'opérateur new
.
MyItem item;
Dans ce cas, l'objet cesse d'exister lorsque la fonction retourne; vous n'avez pas besoin de vous souvenir de le supprimer.
J'ai essayé * article. penser l'espace entre les questions?Les serveurs Linux viennent de tomber en panne, je vais devoir attendre qu'ils reviennent avant que je puisse l'essayer avec l'espace entre * et item. – kralco626
@kralco: Non, ce n'est pas grave. Avez-vous un livre d'introduction en C++? – GManNickG
Non, je prends une classe de systèmes d'exploitation. J'ai pris une tonne de cours de programmation en Java et utilisé C# et toujours au travail. Cependant, aucune de ces langues n'utilise des pointeurs comme C/C++. Cela fait partie d'un projet plus vaste avec l'implémentation d'un programme qui fait pipelining (même si Linux l'a intégré). J'ai tout écrit et j'obtiens cette erreur. – kralco626