Konvertierung des Parameters 1 von 'std::string **__w64 ' in 'std::string *' nicht möglich



  • Ich habe in einer Headerdatei eine Klasse definiert.
    In der main-Funktion lege ich ein neues Objekt dieser Klasse an, dadurch wird der Konstruktor aufgerufen, der einen String einliest.

    Die Adresse dieses Strings gebe ich dann an die nächste Funktion weiter, um den String in Großbuchstaben zu konvertieren.
    Nach diesem Schritt möchte ich den in Großbuchstaben kovertierten String an die nächste Funktion übergeben.

    Folgende Fehlermeldung erscheint:

    rom2Arab.h(55): error C2664: 'rom2Arab::romCheck': Konvertierung des Parameters 1 von 'std::string **__w64  ' in 'std::string *' nicht möglich
    

    Hier die Header-Datei:

    #ifndef ROM2ARAB_H
    #define ROM2ARAB_H
    
    #include <iostream>
    #include <conio.h>
    #include <cstdlib>
    #include <string>
    #include <algorithm>
    
    using namespace std;
    
    // Klasse zur Umwandlung roemischer in arabische Zahlen
    class rom2Arab
    {
    	private:
    		string sRoemischeZahl;
    
    	public:
    		rom2Arab();
    		int romEinlesen ();
    		int romToUpper (string *name);
    		int romCheck (string *name);
    		int romConversion (string *name);
    };
    
    // Konstruktor der Klasse
    rom2Arab::rom2Arab()
    {
    	romEinlesen();
    }
    
    // Funktionen der Klasse
    int rom2Arab::romEinlesen ()
    {
    	cout << "Geben Sie bitte eine roemische Zahl ein!\n"
    		 << "Erlaubt sind folgende Ziffern:\n"
    		 << "I - V - X - L - C - D - M\n\n"
    		 << "Eingabe: "
    		 ;
    
    	cin >> sRoemischeZahl;
    
    	romToUpper(&sRoemischeZahl);
    
    	return 0;
    }
    
    int rom2Arab::romToUpper(string *name)
    {
    	transform(name->begin(), 
                  name->end(),   
                  name->begin(),  
                  ::toupper);
    
    	romCheck(&name);
    	return 0;
    }
    
    int rom2Arab::romCheck(string *name)
    {
    	cout << *name;
    	getch();
    
    	return 0;
    }
    
    #endif ROM2ARAB_H
    

    Ich muss doch der nächsten Funktion wieder die Adresse des Strings (name) übergeben. Warum geht das denn nicht 😕

    Danke schonmal im Voraus für eure Hilfe 🙂



  • name statt &name in Zeile 55?



  • Das wars 😃 Denkfehler.
    Kann ja nicht die Adresse der Adresse übergeben.

    Dankeschön 🙂



  • Statt Zeiger solltest du besser Referenzen übergeben (d.h. "string & name"), dann entfällt das lästige Dereferenzieren und Fehler wie bei dir sind auch seltener...



  • Habit schrieb:

    Kann ja nicht die Adresse der Adresse übergeben.

    Kannst Du schon, nur in Deinem Fall halt nicht.


Anmelden zum Antworten