error Code C2227 Hilfe für Verständnis und Behebung des Fehlers



  • Hallo Zusammen,
    ich benötige bisschen Hilfe bei dem oben angegebenen Fehlercode. Verstehe nicht genau was ich falsch mache. Links von "->getSignature" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden. . Ich verstehe wohl irgendwie die Fehlerbezeichnung nicht. Einen Pointer vom Typ medium hab ich ja mit der Variable tmp und den Fülle ich ja dann mit

    tmp = new Medium();
    

    Hier ist der betroffene Codeteil:

    int main(){
    	MyContainer *container = new MyContainer;
    	Medium *tmp = NULL;
    	bool abort = false;
    
    	int indexMedien = 0;
    	Medium* medium[N];
    	/*int indexBook = 0;
    	Book* book[N];
    	int indexMovie = 0;
    	Movie* movie[N];
    	*/
    
    	getMenuText();
    	char instruction = '0';//auswahl
    	while (instruction != 'q'){
    		cout << endl << "Was wollen Sie tun?" << endl;
    		cout << "->";
    		cin >> instruction;
    		cout << endl;
    		switch (instruction)
    		{
    		case 'm':	//erstellen eines neuen Medium		
    			tmp = new Medium;
    
    			abort = false;
    			for (container->begin(); ((container->getItem() != NULL)||abort == true); container->next()){
    			//cout << &tmp->getSignature;
    				if (tmp->getSignature == container->getItem->getSignature){
    					abort = true;
    					cout << "Fehlermeldung: Hinzufügen eines neuen Elementes hat leider nicht geklappt" << endl;
    
    				}
    			}
    			//container->add(tmp);
    			break;
    		/*case 'b':	//erstellen eines neuen Buches			
    			if (indexBook < N){
    				book[indexBook] = new Book();
    				indexBook++;
    				break;
    			}
    			cout << "Speicher voll"; break;
    		case 'v':	//erstellen eines neuen Movies			
    			if (indexMovie < N){
    				movie[indexMovie] = new Movie();
    				indexMovie++;
    				break;
    			}
    			cout << "Speicher voll"; break;
    			*/
    		case 'l':
    

    Und diese Zeile gefällt ihm nicht, bzw der Pointer tmp:

    if (tmp->getSignature == container->getItem->getSignature){
    

    Das Programm ist eine Übungsaufgabe zu Implementierung eines Containers, und der Container beinhaltet Knoten mit einem next Pointer und dem Element(in dem beispiel jetzt eben das Medium).
    Hoffe um Hilfe, da ich wegen dem Fehler nicht mehr weiterkomme,bzw mit die Überprüfung fehlt.
    Danke im Voraus 😃



  • Meinst du vielleicht:

    if (tmp->getSignature() == container->getItem()->getSignature())
    

    ?



  • hast Du mal tmp->getSignature() probiert ?



  • 😡 😡 Okay ja jetzt funktioniert es, was ist genau der unterschied wenn ich keine () nach der methode angebe? VisualStudio hat es mit so hingeklatscht (durch die autovervollständigung), daher dachte ich die KLammern sin einfach optional.



  • und noch eine dumme frage, wie markiere ich den Beitrag als erledigt? 😕



  • benschke schrieb:

    😡 😡 Okay ja jetzt funktioniert es, was ist genau der unterschied wenn ich keine () nach der methode angebe? VisualStudio hat es mit so hingeklatscht (durch die autovervollständigung), daher dachte ich die KLammern sin einfach optional.

    Ohne die Klammern ist es ein Funktionszeiger.

    benschke schrieb:

    und noch eine dumme frage, wie markiere ich den Beitrag als erledigt? 😕

    Gar nicht, sowas wird hier nicht praktiziert.


Log in to reply