Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (WinAPI, Konsole) » Objekt erzeugung innerhalb einer IF-Anweisung

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 < [ 2 ]
000
20.12.2005, 19:23 Uhr
Noob2k5



Ich möchte mir in einer IF-Anweisung ein Objekt erzeugen, sofern die Bedienungen erfüllt sind.(Klappt auch)

Allerdings möchte ich am Ende einige der Objektattribute abfragen und in eine .txt Datei schreiben. Da das Objekt allerdings innerhalb einer IF-Anweisung steht bricht der compiler mit dem Fehler Objekt undeclared ab.

Ich will die write Anweisung allerdings nicht mit in die IF-Anweisung nehmen.

Wie kann ich es schaffen das mein write Anweisung nur ausgeführt wird, wenn das Objekt auch vorhanden ist und ich so das Programm kompiliert kriege? Mit einer try-catch Anweisung hab ich es schon versucht, allerdings scheinen die hier etwas schwer zu bedienen zu sein als in J@va - oder zumindest gibt meine IDE nicht die features her die Eclipse hat.

Hier mal ein Code schnipsel


C++:
if(checkDatum(tg, mn, jr))
    {
    Member b( id, name, tg, mn, jr);
    }
    else{
       std::cout<<"Datumspruefung fehlerhaft"<<std::endl;
    }

    std::cout<<"Zu guter letzt:Das wegschreiben in eine Datei"<<std::endl;


    write(b);


Jemand eine Tip?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
20.12.2005, 19:31 Uhr
Oliver
S2-Pixelgeneral



Zitat:

Ich will die write Anweisung allerdings nicht mit in die IF-Anweisung nehmen.




Zitat:

das mein write Anweisung nur ausgeführt wird, wenn das Objekt auch vorhanden ist



Das widerspricht sich.
--
Demokratie ist die Diktatur der Mehrheit.

www.siedler25.org/ ( Siedler2 - Remake )
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
20.12.2005, 21:36 Uhr
Noob2k5




Zitat von Oliver:

Zitat:

Ich will die write Anweisung allerdings nicht mit in die IF-Anweisung nehmen.




Zitat:

das mein write Anweisung nur ausgeführt wird, wenn das Objekt auch vorhanden ist



Das widerspricht sich.


Mag sein, ist nicht zwangsläufig sinnig - aber gibts einen weg das programm lauffähig zu machen, ohne die write funktion mit in den IF-Block zu nehmen?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
20.12.2005, 22:23 Uhr
Pler
Einer von Vielen
(Operator)


Wenn das innerhalb einer IF-Anweidung ist, dann ist es auch in einem Block.
Das Objekt verliert allerdings auserhalb des Blocks seine Gültigkeit.

Schau dir mal Gültikeitsbereiche von Variablen an.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
20.12.2005, 22:24 Uhr
Pler
Einer von Vielen
(Operator)



Code:
int i = 5;
// i ist 5

if( .... )
{
  int i = 10;
  int j = 77;
  // i ist 10
  // j ist 77;

}

// i ist wieder 5
// j ist nicht definiert


 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
20.12.2005, 23:57 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



Zitat:

// i ist wieder 5


wiso wieder?war es das nicht vorher auch schon...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
21.12.2005, 00:14 Uhr
Pler
Einer von Vielen
(Operator)


Nein! Wenn ich den Quellcode Zeile für Zeile durchgehen, dann nicht.
Logisch gesehen allerdings schon.


Bearbeitung:

Aber sagt "wieder" nicht gerade aus, dass es schon einmal so war?


Dieser Post wurde am 21.12.2005 um 00:16 Uhr von Pler editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
21.12.2005, 00:47 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


Naja nicht ganz... die richtige Antwort ist wohl eher das hier das eine i mit dem anderen nicht wirklich was zu tun hat. Es gibt in dem Fall zweimal i, das eine ist halt außerhalb des Scopes (und kann innerhalb der klammern mit ::i angesprochen werden) und daher ist es auch die ganze Zeit über 5 und war auch nie etwas anderes...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
21.12.2005, 10:25 Uhr
Pler
Einer von Vielen
(Operator)


Das sagte ich doch.
Trotzdem. Kann man das meiner Meinung so sagen. Da die gleiche printf-Zeile an diesen beiden Stellen unterschiedliches ausgeben würde.

Es sind zwei verschiedene Variablen. Beide Variablen heissen gleich.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
21.12.2005, 16:10 Uhr
mmc20
puss in boots


wenn das write nicht in den if-block will, dann muss die definition von b eben davor und wird erst im if{} mit werten gefüllt...

C++:
Member b( -1, 0, 0, 0);
if ( checkDatum( tg, mn, jr) ) {
    b = Member( id, name, tg, mn, jr);
} else {
    std::cout<<"Datumspruefung fehlerhaft"<<std::endl;
}
std::cout<<"Zu guter letzt:Das wegschreiben in eine Datei"<<std::endl;
if ( b.id != -1 )
    write(b);


oder du setzt ein "flag"

C++:
BOOL bFlag = FALSE;
if ( checkDatum( tg, mn, jr) ) {
    Member b( id, name, tg, mn, jr);
    bFlag = TRUE;
} else {
    std::cout<<"Datumspruefung fehlerhaft"<<std::endl;
}
std::cout<<"Zu guter letzt:Das wegschreiben in eine Datei"<<std::endl;
if ( bFlag )
    write(b);

 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ C / C++ (WinAPI, Konsole) ]  


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: