Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » error C2644

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 <
000
03.05.2008, 17:00 Uhr
Fingolin



Also vorweg ma mein code(auszugsweise):

Strecke.hpp(komplett)

C++:
#define Namenslaenge 20
class cStrecke
{
public:
    char Anfangspunkt_Name[Namenslaenge];
    char Endpunkt_Name[Namenslaenge];
    void Anfangspunkt_Anzeigen();
    void Endpunkt_Anzeigen();
    int Laenge;
    int Anfangspunkt_Nummer;
    int Endpunkt_Nummer;
    bool Anfangspunkt_Start;
    bool Endpunkt_Start;
    bool Anfangspunkt_Ende;
    bool Endpunkt_Ende;
    int Streckennummer;
    cStrecke();

};

class cPunkt
{
public:
    char Name[Namenslaenge];
    void getname();
    char returnname(int i);
    bool Markiert;
    int Nummer;
    cPunkt();
};

void GetDaten(int AnzahlPunkte,int *pPunkte,cStrecke *pStrecke,cPunkt *pPunkt);
int StreckenLoeschen(cStrecke *pStrecke,int AnzahlStrecken);
int SucheStrecke(char *pStartpunkt,cStrecke *pStrecken,int AnzahlStrecken);
void Strecken_neu(cStrecke pStrecke,int AnzahlStrecken,cStrecke *pStrecken);


main.cpp(auszüge)

C++:
.
.
...

    AnzahlStrecken=StreckenLoeschen(pStrecke,AnzahlStrecken);

    cStrecke *pStrecken;
    pStrecken=new cStrecke[AnzahlStrecken];

    Strecken_neu(pStrecken,AnzahlStrecken,pStrecke);
    SucheStrecke(pStartpunkt,pStrecken,AnzahlStrecken);
    cout << "Anzahl der Strecken! : " << AnzahlStrecken;
    cin >> x;
    return 0;
}


und dann noch Strecke.cpp

C++:
.
.
...
int StreckenLoeschen(cStrecke *pStrecke,int AnzahlStrecken)
{
    int Geloescht=0;
    for (int i=0;i<AnzahlStrecken;i++)
    {
        if (pStrecke[i].Laenge==0&&i<AnzahlStrecken)
        {
            pStrecke[i].Anfangspunkt_Ende=pStrecke[i+1].Anfangspunkt_Ende;
            strcpy(pStrecke[i].Anfangspunkt_Name,pStrecke[i+1].Anfangspunkt_Name);
            pStrecke[i].Anfangspunkt_Nummer=pStrecke[i+1].Anfangspunkt_Nummer;
            pStrecke[i].Anfangspunkt_Start=pStrecke[i+1].Anfangspunkt_Start;
            pStrecke[i].Endpunkt_Ende=pStrecke[i+1].Endpunkt_Ende;
            strcpy(pStrecke[i].Endpunkt_Name,pStrecke[i+1].Endpunkt_Name);
            pStrecke[i].Endpunkt_Nummer=pStrecke[i+1].Endpunkt_Nummer;
            pStrecke[i].Endpunkt_Start=pStrecke[i+1].Endpunkt_Start;
            Geloescht++;
            AnzahlStrecken--;
        }
    }
    return AnzahlStrecken;
};
void Strecken_neu(cStrecke *pStrecken,int AnzahlStrecken,cStrecke *pStrecke)
{
    
    for (int i=0;i<AnzahlStrecken;i++)
    {
        pStrecken[i].Anfangspunkt_Ende=pStrecke[i].Anfangspunkt_Ende;
        strcpy(pStrecken[i].Anfangspunkt_Name,pStrecke[i].Anfangspunkt_Name);
        pStrecken[i].Anfangspunkt_Nummer=pStrecke[i].Anfangspunkt_Nummer;
        pStrecken[i].Anfangspunkt_Start=pStrecke[i].Anfangspunkt_Start;
        pStrecken[i].Endpunkt_Ende=pStrecke[i].Endpunkt_Ende;
        strcpy(pStrecken[i].Endpunkt_Name,pStrecke[i].Endpunkt_Name);
        pStrecken[i].Endpunkt_Nummer=pStrecke[i].Endpunkt_Nummer;
        pStrecken[i].Endpunkt_Start=pStrecke[i].Endpunkt_Start;
        
    }
    delete pStrecke;
    
};


Der Fehler lautet:
Code:
c:\Programmentwicklung\Projekte\Belman.Ford\main.cpp(124) : error C2664: 'Strecken_neu': Konvertierung des Parameters 1 von 'cStrecke *' in 'cStrecke' nicht möglich
        Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig


leider verstehe ich nur,dass es irgendetwas mit der übergabe der Pointer zu tun haben muss (
C++:
Strecken_neu(pStrecken,AnzahlStrecken,pStrecke);
)
jedoch leider nicht was genau.
ich hoffe einer von euch weiß es...
Mit Freundlichen Grüßen
Fingolin
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.

Dieser Post wurde am 03.05.2008 um 17:01 Uhr von Fingolin editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
03.05.2008, 17:04 Uhr
0xdeadbeef
Gott
(Operator)



C++:
void Strecken_neu(cStrecke * /* <-- */pStrecke,int AnzahlStrecken,cStrecke *pStrecken);


--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
03.05.2008, 17:25 Uhr
Fingolin



Oh äh^^
danke
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
03.05.2008, 18:53 Uhr
Fingolin



Ich hab mir jetzt eine Funktion geschrieben,die den kürzesten weg suchen soll^^ sieht wie folgt aus:

C++:
int SucheStrecke(char *pStartpunkt,cStrecke *pStrecken,int AnzahlStrecken,cPunkt *pPunkt,int AnzahlPunkte)
{
    for (int i=0;i<AnzahlStrecken;i++)
    {
        if (strcmp(pStrecken[i].Endpunkt_Name,pStartpunkt)==0)
        {
            cout <<">>" << pStrecken[i].Endpunkt_Name<< "<<" <<" führt zu " << pStrecken[i].Anfangspunkt_Name << endl;
            if (pPunkt[i].Markiert==false)
            {
                pPunkt[i].Markiert=true;
                strcpy(pPunkt[i].Vorgaenger,pStartpunkt);
                pPunkt[i].Laenge=(pStrecken[i].Laenge+Vorgaengerlaenge(pStrecken[i].Anfangspunkt_Name,pPunkt,AnzahlPunkte));
            }
            if (pPunkt[i].Markiert==true && pPunkt[i].Laenge>pStrecken[i].Laenge+Vorgaengerlaenge(pStrecken[i].Anfangspunkt_Name,pPunkt,AnzahlPunkte))
            {
                strcpy(pPunkt[i].Vorgaenger,pStartpunkt);
                pPunkt[i].Laenge=(pStrecken[i].Laenge+Vorgaengerlaenge(pPunkt[i].Vorgaenger,pPunkt,AnzahlPunkte));
            }
        }
        if (strcmp(pStrecken[i].Anfangspunkt_Name,pStartpunkt)==0)
        {
            cout <<">>" << pStrecken[i].Anfangspunkt_Name<< "<<" <<" führt zu " << pStrecken[i].Endpunkt_Name << endl;
            if (pPunkt[i].Markiert==false)
            {
                pPunkt[i].Markiert=true;
                strcpy(pPunkt[i].Vorgaenger,pStartpunkt);
                pPunkt[i].Laenge=(pStrecken[i].Laenge+Vorgaengerlaenge(pStrecken[i].Endpunkt_Name,pPunkt,AnzahlPunkte));
            }
            if (pPunkt[i].Markiert==true && pPunkt[i].Laenge>pStrecken[i].Laenge+Vorgaengerlaenge(pStrecken[i].Endpunkt_Name,pPunkt,AnzahlPunkte))
            {
                strcpy(pPunkt[i].Vorgaenger,pStartpunkt);
                pPunkt[i].Laenge=(pStrecken[i].Laenge+Vorgaengerlaenge(pPunkt[i].Vorgaenger,pPunkt,AnzahlPunkte));
            }
            }
    }
return 0;
};



C++:
int Vorgaengerlaenge(char *pVorgängername,cPunkt *pPunkt,int AnzahlPunkte)
{
    for (int i=0;i<AnzahlPunkte;i++)
    {
        if (strcmp(pPunkt[i].Name,pVorgängername)==0)
        {
            return pPunkt[i].Laenge;
        }
    }
};

Hier noch die Headerdatei

C++:
#define Namenslaenge 20
class cStrecke
{
public:
    char Anfangspunkt_Name[Namenslaenge];
    char Endpunkt_Name[Namenslaenge];
    void Anfangspunkt_Anzeigen();
    void Endpunkt_Anzeigen();
    int Laenge;
    int Anfangspunkt_Nummer;
    int Endpunkt_Nummer;
    bool Anfangspunkt_Start;
    bool Endpunkt_Start;
    bool Anfangspunkt_Ende;
    bool Endpunkt_Ende;
    int Streckennummer;
    cStrecke();

};

class cPunkt
{
public:
    char Name[Namenslaenge];
    void getname();
    char returnname(int i);
    bool Markiert;
    int Nummer;
    char Vorgaenger[Namenslaenge];
    int Laenge;
    cPunkt();
};

void GetDaten(int AnzahlPunkte,int *pPunkte,cStrecke *pStrecke,cPunkt *pPunkt);
int StreckenLoeschen(cStrecke *pStrecke,int AnzahlStrecken);
int SucheStrecke(char *pStartpunkt,cStrecke *pStrecken,int AnzahlStrecken,cPunkt *pPunkt,int AnzahlPunkte);
void Strecken_neu(cStrecke *pStrecke,int AnzahlStrecken,cStrecke *pStrecken);
int Vorgaengerlaenge(char *pVorgängername,cPunkt *pPunkt,int AnzahlPunkte);


Der Konstruktor:

C++:
cPunkt::cPunkt()
{
    Nummer=65535;
    Markiert=false;
    strcpy(Vorgaenger,"0123456789012345678");
};



und dann hier noch der Aufrufin der main funktion:

C++:
    
    for (int i=0;i<AnzahlPunkte;i++)
        if (strcmp(pPunkt[i].Name,Zielort)==0)
        {
            cout << pPunkt[i].Name << " erreicht über den Vorgänger: "<< pPunkt[i].Vorgaenger << endl;
        }








Habe das Problem das(nicht immer aber manchmal) pPunkt[i].Vorgaenger als "0123456789012345678" ausgegeben wird,also nicht korrekt überschrieben wird...
Bin für jede Antwort dankbar
MFG Fingolin
--
Wenn einer mit Vergnügen zu einer Musik in Reih und Glied marschieren kann, dann hat er sein großes Gehirn nur aus Irrtum bekommen, da für ihn das Rückenmark schon völlig genügen w�rde.

Dieser Post wurde am 03.05.2008 um 18:53 Uhr von Fingolin editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ C / C++ (ANSI-Standard) ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: