2016-08-13 1 views
-1

Ich versuche, eine Funktion einen Zeiger auf die kleinste Zelle in einer verknüpften Liste zurückgeben, wo Zelle eine Struktur ist. Die Funktion gibt mir Fehler, die besagen, dass der Funktion ein Typspezifizierer fehlt. Jede Hilfe wird geschätzt.C++: Kann keinen Zeiger auf eine Struktur zurückgeben

.h-Datei

private: 
// TODO: Fill this in with the implementation of your doubly-linked list 
// priority queue. You can add any fields, types, or methods that you 
// wish. 
struct Cell { 
    string value; 
    Cell * next; 
    Cell * prev; 
}; 
int count; 
Cell * root; 
void clear(); 
Cell * getSmallestCell(); 

CPP-Datei

Cell * DoublyLinkedListPriorityQueue::getSmallestCell() { 
Cell * smallest = root; 
for (Cell * i = root; i != NULL; i = i->next) { 
    if (i->value < smallest->value) { 
     smallest = i; 
    } 
} 
return smallest; 

}

+0

Können Sie C und C++ nicht mit zwei Tags versehen? Es ist verwirrend, um eine gute Antwort zu geben. – JVApen

+0

@JVApen C wurde hier nie in Frage gestellt. –

+0

Es wurde markiert, bevor Sie es bearbeitet haben. (Siehe http://stackoverflow.com/posts/38930881/revisions) – JVApen

Antwort

0

Statt

Cell* DoublyLinkedListPriorityQueue::getSmallestCell() 

sollte es sein

DoublyLinkedListPriorityQueue::Cell* DoublyLinkedListPriorityQueue::getSmallestCell() 

oder (da C++ 11)

auto DoublyLinkedListPriorityQueue::getSmallestCell() -> Cell * 

als Cell ist eine innere Art des DoublyLinkedListPriorityQueue.

+0

Danke. Warum muss ich den Bereich von Cell nicht angeben, wenn ich ihn intern in anderen Funktionen verwende? –

+0

Wenn Sie es in der Member-Methode 'DoublyLinkedListPriorityQueue' verwenden, befinden Sie sich im richtigen Bereich. Innerhalb der freien Funktion müssen Sie 'DoublyLinkedListPriorityQueue :: Cell' anstelle von' Cell' verwenden. (guter Anwendungsfall für 'auto', um diesen Typ BTW zu verkürzen). – Jarod42

Verwandte Themen