Problem bei Parameterübergabe. String im Konstruktor
-
Hallo liebe Leute. Ich komme nicht vorran. Ich hantiere grade etwas mit Klassen und bekomme eine Fehlermeldung in der Konsole a la "invalid conversion from "int" to "const char*"" in der Zeile in der ich den Konstruktor in der Main aufrufe.
Diese Fehlermeldung hilft mir in diesem Kontext nicht. Hat jemand Tipps?
Das ganze soll übrigens ein Taschenrechner sein der mit Plus und Mal in umgekehrt polnischer Notation rechnet. Vielen Dank für jeden Hinweis.#include <iostream> #include <string> #include <stack> #include <stdlib.h> //atoi using namespace std; class Calculator{ public: Calculator(string Aufgabe); ~Calculator(); int compute(); private: string expr; stack<int> Stack; }; Calculator::Calculator(string Aufgabe){ expr = Aufgabe; }; int Calculator::compute(){ string ::iterator s_iExpr; // Zähler für Ausdruck string sNummer; // Aktuelle Zahl vom Stack int Nummer1 = 0; // Zwischen den Schritten int Nummer2 = 0; s_iExpr = expr.begin(); // Zeiger zeigt auf Anfang des Aufgabenstrings // Schleife : Bis das Programm Ende des Aufgabenstrings erreicht while(s_iExpr != expr.end()) { sNummer = ""; // Immer wieder leer initialisieren // SwitchVerzw: Auf Zahl oder OP checken switch (*s_iExpr){ case '+': Nummer1 = Stack.top(); // Erst Operation durchführen Stack.pop(); // Dann die letzten zwei Elemente löschen Nummer2 = Stack.top(); Stack.pop(); Stack.push(Nummer1 + Nummer2); // Zwischenergebnis auf Stack ablegen Nummer1 = 0; // Nummer wieder auf 0 setzen Nummer2 = 0; s_iExpr++; // Einen Schritt weiter gehen auf Strink, dann erneut check break; case '*': Nummer1 = Stack.top(); Stack.pop(); Nummer2 = Stack.top(); Stack.pop(); Stack.push(Nummer1 * Nummer2); Nummer1 = 0; Nummer2 = 0; s_iExpr++; break; default: sNummer += *s_iExpr; // Den Wert des Zeigers zwischenspeichern in String Stack.push(atoi(sNummer.c_str())); s_iExpr++; break; } } cout << Stack.top() << endl; }; int main(){ Calculator A('812+4*+'); A.compute(); return 0; };
-
Welche Anführungszeichen verwendet man für Strings?
-
'x' ist ein Zeichen. Der Datentyp hierfür ist char.
"x" ist ein char-Array. Der Datentyp hierfür ist char[].'xxxxx' was du geschrieben hast, gibt es nicht. Es gibt ein Zeichen in Hochkomma und es gibt eben eine Zeichenkette in Anführungszeichen.
-
Vielen Dank. Stimmt das war ein offensichtlicher Bock
Ich muss natürlich erst string Aufgabe = "123+*" initialisieren und dann an den Konstruktor übergeben. Danke
-
out schrieb:
"x" ist ein char-Array. Der Datentyp hierfür ist char[].
Genau genommen ist es ein
const char[2]
. Die Laenge ist genau bekannt und auf const-Korrektheit wird auch geachtet (auch wenn es eine veraltete Konvertierung const char* -> char* gibt, die diese dann wieder komplett ignoriert).