Geen instantie van overbelaste functie overeenkomt met argumentlijst.

Ik werk aan een project voor de les, maar blijf de foutmelding krijgen: geen instantie van overbelaste functie overeenkomt met argumentlijst. Het verwijst naar mijn snaarklassen. Wat ik probeer te doen is een kopie, concat- en tellenfuncties maken met het gebruik van de snaarklasse. Elke hulp zou zeer op prijs worden gesteld.

#define _CRT_SECURE_NO_WARNINGS
#include <iostream>
#include <string>
using namespace std;
class String
{
private:
char str[100]; 
char cpy[100];
public:
static const char NULLCHAR = '\0';
String()
{
    str[0] = NULLCHAR;
    cpy[0] = NULLCHAR;
}
String(char* orig, char* cpy)
{
    Copy(orig, cpy);
}
void Display()
{
    cout << str << endl;
}
void Copy(char* orig, char* dest)
{
    while (*orig != '\0') {
        *dest++ = *orig++;
    }
    *dest = '\0';
}
void Copy(String& orig, String& dest) 
{
    Copy(orig.str, dest.cpy);
}
void Concat(char* orig, char* cpy)
{
    while (*orig)
        orig++;
    while (*cpy)
    {
        *orig = *cpy;
        cpy++;
        orig++;
    }
    *orig = '\0';
}
void Concat(String& orig, String& cpy)
{
    Concat(orig.str, cpy.cpy);
}
int Length(char* orig)
{
    int c = 0;
    while (*orig != '\0')
    {
        c++;
        *orig++;
    }
    printf("Length of string is=%d\n", c);
    return(c);
}
};
int main()
{
String s;
s.Copy("Hello");
s.Display();
s.Concat(" there");
s.Display();
String s1 = "Howdy";
String s2 = " there";
String s3;
String s4("This String built by constructor");
s3.Copy(s1);
s3.Display();
s3.Concat(s2);
s3.Display();
s4.Display();
system("pause");
return 0;
}

Antwoord 1

Het lijkt erop dat uw functies Copyen Concatelk twee parameters gebruiken, maar u geeft ze allebei één enkele parameter door. Als je ze naar een String-object wilt kopiëren, zou je code er meer als volgt uit moeten zien:

String Copy(char* orig)
{
    // Same copy logic you have, 
    // except copy into "*this"
}

Antwoord 2

Zoals de foutmelding zegt, is er geen versie van de constructor voor uw String-klasse die een enkele parameter nodig heeft. U hebt een standaardconstructor en een die twee parameters nodig heeft.

Je moet er een definiëren die een enkele parameter nodig heeft en de str initialiseert


Antwoord 3

String s4(“Deze string gebouwd door constructor”);
deze verklaring heeft een constructiefunctie nodig

String(char *);

Other episodes