Fehler: kann nicht konvertiert const string, const char* " für argument 1 zu size_t strlen(const char*)
Ich bin ziemlich neu in C++ und bin sehr verwirrt, was hier passiert. Der Fehler ist die Zeile int len = strlen(strin);
. Irgendwelche Vorschläge, wie dieses Problem zu beheben würde sehr geschätzt.
BigNum::BigNum(const std::string& strin)
{
digits = NULL;
int len = strlen(strin);
if (len == 0)
{
BigNum zero;
*this = zero;
return;
}
used = len;
positive = true;
int i = 0;
if(strin[i] == '-')
{
positive = false;
i = 1;
used--;
}
else if(strin[i] == '+')
{
i = 1;
used--;
}
capacity = double_up_default(used);
digits = new unsigned int[capacity];
for(unsigned int k = 0; k < used; ++k)
{
digits[used - k - 1] = strin[i++] - '0';
}
trim();
}
- Auch
*this = zero;
ist schlechtes design, wenn nicht ein völliger Fehler. Ihr Objekt ist nicht vollständig aufgebaut, bis der Konstruktor abgeschlossen ist , also wennoperator=
rechnet mit einem vollständig konstruierten Objekt, dann könnten die Dinge nach Süden gehen schnell. Versuchen Sie, die Variablen, die Sie brauchen, in einer anderen Art und Weise.
Du musst angemeldet sein, um einen Kommentar abzugeben.
strlen
weiß nichts über diestd::string
. Es ist eine C-Funktion, die liefert die Länge eines nullterminierten string.Glücklicherweise
std::string
kennt seine eigene Länge. Versuchen Sie dies:oder, wenn Sie sich sorgen über die Auswahl der Größen, die ein string haben kann,