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 wenn operator= 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.
InformationsquelleAutor user3403896 | 2014-03-10
Schreibe einen Kommentar