Benutzerdefinierte Suche

referenzparameterübergabe, c++

  1. hosh

    hosh Thread StarterMacUser Mitglied

    Mitglied seit:
    08.07.2003
    Beiträge:
    425
    Zustimmungen:
    5
    hallo,

    ich erzeuge mir mit

    buchID* buchung = new buchID[groesse];

    ein array, und dieses möchte ich gern an eine funktion übergeben, die die werte des arrays in eine datei schreibt

    hier der programmteil, der funktion:

    ofstream dat_aus;
    dat_aus.open("buchungen.dat", ios_base::out);
    if (!dat_aus)
    {
    cerr<<"datei konnte nicht geöffnet werden!\n";
    return 1;
    }

    dat_aus.write((char *)buchung, sizeof(struct buchID)*groesse);
    dat_aus.close();


    ich habe jetzt verschiedene sachen probiert, aber ich bekomm immer wieder fehlermeldungen ...

    hat jemand ne idee?

    dank und gruß hosh
     
    hosh, 07.05.2006
  2. der_Kay

    der_KayMacUser Mitglied

    Mitglied seit:
    02.09.2004
    Beiträge:
    1.685
    Zustimmungen:
    8
    Poste mal die Fehlermeldungen (und am besten ein lauffähiges Codestück).

    p.s.: Wegen der unterschiedlichen Anordnung der Bytes im Speicher kann es grundsätzlich zu Problemen kommen, wenn man den Inhalt des RAMs "einfach so" in eine Datei schreibt und das wechselweise mit PowerPC- und intel-Prozessoren verarbeitet.
     
    der_Kay, 07.05.2006
  3. hosh

    hosh Thread StarterMacUser Mitglied

    Mitglied seit:
    08.07.2003
    Beiträge:
    425
    Zustimmungen:
    5
    Code:
    struct buchID	{
    				int fzNR;
    				};
    int daten_auslesen(buchID *buchung, int groesse1);
    
    int main()
    {
    	cout<<"eingabe: ";
    	int groesse=0;
    	int i=0;
    	cin>>groesse;
    	buchID* buchung = new buchID[groesse];
    	for(i=0; i<=groesse; i=i+1)
    	{
    		cout<<"Flugzeugnummer: ";
    		cin>>buchung[i].fzNR;
    	}
    	cout<<"\n"<<&buchung;
    	for(i=0; i<=groesse; i=i+1)
    	{
    		cout<<"\nFlugzeugnummer: "<<buchung[i].fzNR;
    	}
    	daten_auslesen(buchung, groesse);
    	delete[] buchung;
    	return 0;
    }
    
    
    
    int daten_auslesen(buchID& buchung1, int groesse1)
    {
    	ofstream dat_aus;
    	dat_aus.open("buchungen.dat", ios_base::out);
    	if (!dat_aus)
    	{
    		cerr<<"datei konnte nicht geöffnet werden!\n";
    		return 1;
    	}
    	
    	dat_aus.write((char *)buchung1, sizeof(struct buchID)*groesse1);
    // main.cpp:107: error: invalid cast from type 'buchID' to type 'char*'
         dat_aus.close();
    	return 0;
    }
    hallo: ich weiß zwar nicht, ob es damit jetzt noch zusammenhängt, aber ich hab jetzt nur noch diesen fehler. wenn ich die ausgelagerte funktion im hauptprogramm betreibe, dann gibt es dort an dieser stelle kein problem.?.

    achso, die structur ist nur so klein, weil ich etwas teste will! ;)
     
    hosh, 07.05.2006
  4. der_Kay

    der_KayMacUser Mitglied

    Mitglied seit:
    02.09.2004
    Beiträge:
    1.685
    Zustimmungen:
    8
    ...also der augenscheinliche Fehler ist, dass man einfach keine (Referenzen auf eine) Struktur in einen Pointer casten darf. Du könntest (char*) (&buchung1) schreiben, solltest aber den Prototyp in
    Code:
    int daten_auslesen(buchID* buchung1, int groesse1)
    ändern. Ich glaube ehrlich, dass Dich diese Software sehr unglücklich machen wird. :-/

    Kann es sein, dass es sehr viele kleine Objekte vom Typ "buchID" geben wird die geschrieben, gelesen, gelöscht und gesucht werden? Das ist eher ein Fall für eine SQL-Datenbank...
     
    der_Kay, 07.05.2006
Die Seite wird geladen...
Ähnliche Themen - referenzparameterübergabe c++
  1. Wolfseye
    Antworten:
    16
    Aufrufe:
    352
  2. GeFa
    Antworten:
    9
    Aufrufe:
    604
    Gondomir
    15.08.2016
  3. Saloice
    Antworten:
    4
    Aufrufe:
    578
  4. ZoliTeglas
    Antworten:
    5
    Aufrufe:
    384
    mrthomasd
    13.10.2015