2016-10-15 3 views
-1

Ich habe ein Problem mit einem Stapel von Zeigern. Ich habe Stapel Zeiger namens ob1Abrufen von Zeiger auf Objekt vom Stapel

stack<object*> ob1; 

dann ich einen Zeiger auf Objekt erstellen und in den Stapel geschoben. Wenn ich diese Zeiger vom Stapel abrufen möchte, verwende ich diese Methode;

object * tag; 
tag = new object(); 
tag = ob1.pop(); 

aber ich bekomme "error C2440: cannot convert void to object*" Ich bin verwechseln, was falsch ist. Ich würde für jede Hilfe zu schätzen wissen.

+2

Ich kann nicht verstehen, was Sie mit diesem Code zu tun versuchen. Was ist 'tag = neues Objekt()' für? Sie leckt es sofort. Darüber hinaus gibt 'ob1.pop() 'keinen Wert zurück (daher der Fehler). Welches Buch verwendest du um C++ zu lernen? Welche Referenz verwenden Sie, um nach Standardbibliothekswerkzeugen und -funktionen zu suchen? –

+0

Ich suche gerade eine Methode, um den Zeiger vom Stapel zu holen. aber ich weiß nicht wie? Ich bin Anfänger. – Rommel

+0

Wenn Sie nur ein Element aus dem Stack öffnen wollen, schreiben Sie einfach 'ob1.pop();' - nichts mehr als das. Wenn du etwas tun willst, was du mir nicht gesagt hast, brauchst du mehr Code ... und du musst besser erklären, was du machen willst. Wieder welches Buch und welche Referenz verwendest du? Es ist schwer zu glauben, dass diese Dinge darin nicht erklärt werden. –

Antwort

0

Sie erhalten diesen Fehler, weil Pop nichts zurückgibt.

Siehe here, der Rückgabetyp ist void, nichts. Sie benötigen das Element top(), um das Element zu erhalten. N.B. pop() ruft den Destruktor Ihres Elements auf.

+0

Dies ist keine gute Frage zu beantworten. Das ist nicht so, dass deine Antwort falsch ist, aber der OP-Code ist so kaputt, dass der Compilerfehler die geringste Sorge ist. – user4581301

+0

Kann nicht leugnen, dass ... Suche das niederländische Wort "Rommel" in Google Translate ... –