Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

05.02.2015, 21:22

Error no instance of constructor matches the argument list.

Ich programmier seit kurzen und habe folgendes Problem. Bei "Wort deiner Wahl" kommt die Fehlermeldung: Error no instance of constructor matches the argument list. Ich hab im Internet nachgeschaut aber englisches Fachchinesisch ist mir zu kompliziert. Könnt ihr mir helfen? ;( ;( ;(
Hier der Code

C-/C++-Quelltext

1
2
3
4
5
6
#include <iostream>#include <string.h>#include <string>using namespace std;
class beispiel{private: char* Name = new char[20]; char* Name1 = new char[20];
public: void ausgabe(char* aName = new char[20], char* aName1 = new char[20]){ Name = aName; Name1 = aName1;
        cout << aName << endl            << aName1 << endl; }};
int main(){
    beispiel A("Wort deiner Wahl", "Wort deiner Wahl1"); A.ausgabe ;    return 0;
Zwei dinge sind unendlich: Die Dummheit der Menschen und das Universum. Beim zweiterem bin ich mir aber noch nicht ganz sicher.
- Albert Einstein

2

05.02.2015, 21:45

Stell bitte auf "Quelltext" um.
Ansonsten sehe ich da so viel falsches, dass ich es für sinnvoller erachte, dir zu raten überhaupt anzufangen C++ zu lernen.... Entschuldige diesen vorlauten Mund, aber selbst die Parameterübergabe scheint total missverstanden.... :S
Emigrierst du von einer anderen Sprache zu C++?

MfG
Check

3

05.02.2015, 21:47

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
class beispiel
{
private:
  char* Name = new char[20];
  char* Name1 = new char[20];
public:
  void ausgabe(char* aName = new char[20], char* aName1 = new char[20])
  {
      Name = aName; Name1 = aName1;
      cout << aName << endl  << aName1 << endl;
  }
};
int main()
{
    beispiel A("Wort deiner Wahl", "Wort deiner Wahl1");
    A.ausgabe;
    return 0;

So ich habs mal etwas geordnet ;)
Das Problem ist, dass du den Konstruktor von beispiel mit Parametern aufrufst, dieser ist aber nicht definiert. Du meinst wohl:

C-/C++-Quelltext

1
2
beispiel A;
A.ausgabe("Wort deiner Wahl", "Wort deiner Wahl1");


Zudem ist der ganze Kram mit new superduper schlecht. Wo ist das passende delete[]? Ich sehe du inkludierst std::string, also benutze den auch:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#include <iostream>
#include <string.h>
#include <string>
using namespace std;
class beispiel
{
private:
  string Name;
  string Name1
public:
  void ausgabe(string aName, string aName2)
  {
      Name = aName; Name1 = aName1;
      cout << aName << endl  << aName1 << endl;
  }
};
int main()
{
    beispiel A;
    A.ausgabe("Wort deiner Wahl", "Wort deiner Wahl1");
    return 0;

So ich habs mal etwas geordnet ;)
Das Problem ist, dass du den Konstruktor von beispiel mit Parametern aufrufst, dieser ist aber nicht definiert. Du meinst wohl:

C-/C++-Quelltext

1
2
beispiel A;
A.ausgabe("Wort deiner Wahl", "Wort deiner Wahl1");

Schau dir auch mal 'const' an.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

05.02.2015, 21:49

Die Klasse "beispiel" wird von Dir mit einem Konstruktor verwendet, den es gar nicht gibt. Außerdem ruft man Methoden auf indem man runde Klammern verwendet.

Edit: Ninjas :ninja:
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

05.02.2015, 21:56

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string.h>     //Nein
#include <string>       //Ja
using namespace std;

class beispiel
{
private: 
char* Name = new char[20];              //Benutze statt char* string, hier kannst du noch keinen Speicher zuweisen.
char* Name1 = new char[20];
public: 
void ausgabe(char* aName = new char[20], char* aName1 = new char[20]) /*ersetze char* mit string und belasse es dabei. Der Speicher wird von string gehandhabt, bis du verstanden hast, wie das ganze funktioniert.*/
{ Name = aName; 
Name1 = aName1;
        cout << aName << endl            << aName1 << endl; 
}
};

int main(){
    beispiel A("Wort deiner Wahl", "Wort deiner Wahl1");    //Du hast nirgendwo einen Konstruktor definiert, sondern lediglich die Funktion ausgabe()
A.ausgabe; 
   return 0;




Verbessert:

C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
#include <iostream>
#include <string>
using namespace std;

class beispiel{
private: 
string Name;
string Name1;
public: 
void ausgabe(string aName, string aName1)
{ 
Name = aName; 
Name1 = aName1;
       cout << aName << endl << aName1 << endl; 
}
};

int main(){
beispiel A; 
A.ausgabe("Wort deiner Wahl", "Wort deiner Wahl1");    
return 0;
}

Fireball

Alter Hase

Beiträge: 415

Wohnort: Werne

Beruf: Dipl. Inf.

  • Private Nachricht senden

6

06.02.2015, 10:07

Tipp von mir. Kauf dir ein C++ Buch und arbeite es durch.

7

06.02.2015, 10:36

Hab ich schon aber es ist von 2001 oder so. Das entschuldigt vielleicht den einen oder anderen Fehler.
Und danke für die Hilfe und die mehr oder weniger konstruktive Kritik.
Zwei dinge sind unendlich: Die Dummheit der Menschen und das Universum. Beim zweiterem bin ich mir aber noch nicht ganz sicher.
- Albert Einstein

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »yoyozocker« (06.02.2015, 10:44)


FSA

Community-Fossil

  • Private Nachricht senden

8

06.02.2015, 13:41

Hab ich schon aber es ist von 2001 oder so. Das entschuldigt vielleicht den einen oder anderen Fehler.

Hmm.. Nein.

Zitat

Der RCCSWU (RandomCamelCaseSomtimesWithUndersquare) Stil bricht auch mal mit den veraltet strukturierten Denkmustern und erlaubt dem Entwickler seine Kreativität zu entfalten.

Werbeanzeige