C++Talk.NET Forum Index C++Talk.NET
C++ language newsgroups
 
Archives   FAQFAQ   SearchSearch   MemberlistMemberlist   UsergroupsUsergroups   RegisterRegister 
 ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

Pointer auf Bool?

 
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German)
View previous topic :: View next topic  
Author Message
Stefan Goerres
Guest





PostPosted: Wed Apr 14, 2004 7:49 am    Post subject: Pointer auf Bool? Reply with quote



Hallo zusammen,

ich habe hier ein kleines Problem und zwar mit zwei eigensinnigen BOOL's ;)

In der Hauptroutine habe ich die zwei Werte

BOOL IsStarted = false;
BOOL IsConnected = false;

die gebe ich an an Funktion weiter welche einen Pointer übernehmen soll..
etwa so

fMakeMyDay(&IsStarted, &IsConnected);

diese soll die dann setzen so je nach Bedarf. Also in etwa so...

int fMakeMyDay(BOOL* IsStarted, BOOL* IsConnected)
{
...
// und nun setzen
IsStarted = true;

Letzteres geht in die Hose Sad Der Compiler sagt immer er könne nicht casten
? Bin ich nun total aufm Schlauch???? Oder gar Holzweg?

Danke
Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de
Back to top
Tibor Pausz
Guest





PostPosted: Wed Apr 14, 2004 10:54 am    Post subject: Re: Pointer auf Bool? Reply with quote



Stefan Goerres <lists (AT) gsysteme (DOT) de> wrote:

Quote:
int fMakeMyDay(BOOL* IsStarted, BOOL* IsConnected)
{
...
// und nun setzen
IsStarted = true;

Das ist ein Zeiger! Ergo vorher derefenzieren

*IsStarted = true;

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Gerd Schmitzer
Guest





PostPosted: Wed Apr 14, 2004 12:54 pm    Post subject: Re: Pointer auf Bool? Reply with quote



Stefan Goerres schrieb:

Quote:
int fMakeMyDay(BOOL* IsStarted, BOOL* IsConnected)
{
...
// und nun setzen
IsStarted = true;

Letzteres geht in die Hose Sad Der Compiler sagt immer er könne nicht casten
? Bin ich nun total aufm Schlauch???? Oder gar Holzweg?

Entweder Pointer auflösen:

*IsStarted = true;

Aber: Da hier Pointer übergeben werden, immer auf != NULL
überprüfen! Ggf. eine Exception werfen.

if ( IsStarted ) *IsStarted = true;


Oder Call-By-Reference (so macht man das idR. für deinen
gewünschten Fall):

int fMakeMyDay( BOOL& IsStarted, BOOL& IsConnected ) ...

dann klappt auch:

IsStarted = true;

GS

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Lars H. Rohwedder
Guest





PostPosted: Wed Apr 14, 2004 1:56 pm    Post subject: Re: Pointer auf Bool? Reply with quote

Stefan Goerres <lists (AT) gsysteme (DOT) de> wrote:
Quote:
Hallo zusammen,

ich habe hier ein kleines Problem und zwar mit zwei eigensinnigen
BOOL's Wink

Wieso eigentlich BOOL? Was ist der Unterschied zum eingebauten Datentyp
bool? Bei letzterem weiß wenigstens jeder C++-Programmierer, was gemeint
ist, somit würde ich ihn immer bevorzugen.

Quote:
int fMakeMyDay(BOOL* IsStarted, BOOL* IsConnected)
{
...
// und nun setzen
IsStarted = true;

Letzteres geht in die Hose Sad Der Compiler sagt immer er könne nicht
? casten Bin ich nun total aufm Schlauch???? Oder gar Holzweg?

Zumindest scheinst du nicht zu wissen, wie man mit Zeigern (Pointern)
umgeht. Vielleicht solltest du es dann sein lassen, und statt dessen
mit Referenzen arbeiten. Die sind leichter zu handhaben und man macht
weniger Fehler. (Darum wurden sie bei C++ ja auch eingeführt!) Also:

int fMakeMyDay(BOOL& iss, BOOL& isc)
{
iss = true;
}

und wenn du die Funktion aufrufst, brauchst du auch nicht mehr mit dem
Address-of-Operator rumzuhantieren, sondern schreibst einfach:

fMakeMyDay(IsStarted, IsConnected);

Am besten, du besorgst dir mal ein gutes Einsteigerbuch über C++.
(Empfehlungen gingen vor kurzem ja wieder durch diese Gruppe.) Damit du
gar nicht erst anfängst, C++ im C-Stil zu schreiben. Denn das ist und
bleibt immer hässlich und ... fehleranfällig.

Gruß,

Lars R.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Rolf Magnus
Guest





PostPosted: Wed Apr 14, 2004 3:35 pm    Post subject: Re: Pointer auf Bool? Reply with quote

Stefan Goerres wrote:

Quote:
Hallo zusammen,

ich habe hier ein kleines Problem und zwar mit zwei eigensinnigen
BOOL's Wink

Was ist 'BOOL'? Ein typedef für bool?

Quote:
In der Hauptroutine habe ich die zwei Werte

BOOL IsStarted = false;
BOOL IsConnected = false;

die gebe ich an an Funktion weiter welche einen Pointer übernehmen
soll.. etwa so

fMakeMyDay(&IsStarted, &IsConnected);

Wieso nicht Referenzen?

Quote:
diese soll die dann setzen so je nach Bedarf. Also in etwa so...

int fMakeMyDay(BOOL* IsStarted, BOOL* IsConnected)
{
...
// und nun setzen
IsStarted = true;

Letzteres geht in die Hose Sad Der Compiler sagt immer er könne nicht
casten ?

Sagt er bestimmt nicht. Casten tut der Compiler nie selbst, das macht
immer der Programmierer. Du meinst vermutlich 'konvertieren'.

Quote:
Bin ich nun total aufm Schlauch????

Du weist den Wert true dem Zeiger zu, nicht dem, worauf er zeigt.

Quote:
Oder gar Holzweg?

Nein. Wenn du:

*IsStarted = true;

schreibst, sollte es gehen.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Stefan Goerres
Guest





PostPosted: Thu Apr 15, 2004 7:19 am    Post subject: Re: Pointer auf Bool? Reply with quote

Lars H. Rohwedder wrote:
Quote:
Stefan Goerres <lists (AT) gsysteme (DOT) de> wrote:
Hallo zusammen,

ich habe hier ein kleines Problem und zwar mit zwei eigensinnigen
BOOL's ;)

Wieso eigentlich BOOL? Was ist der Unterschied zum eingebauten
Datentyp bool? Bei letzterem weiß wenigstens jeder C++-Programmierer,
was gemeint ist, somit würde ich ihn immer bevorzugen.

ja ich habe das auch gestern gesehen das es da einen Unterschied gibt.
Den Ursprungscode habe ich nicht geschrieben deswegen bin ich da nicht so
direkt drüber gestolpert bzw. habe mir keine Gedanken drüber gemacht.

Quote:
int fMakeMyDay(BOOL* IsStarted, BOOL* IsConnected)
{
...
// und nun setzen
IsStarted = true;

Letzteres geht in die Hose Sad Der Compiler sagt immer er könne nicht
? casten Bin ich nun total aufm Schlauch???? Oder gar Holzweg?

Zumindest scheinst du nicht zu wissen, wie man mit Zeigern (Pointern)
umgeht. Vielleicht solltest du es dann sein lassen, und statt dessen
mit Referenzen arbeiten. Die sind leichter zu handhaben und man macht
weniger Fehler. (Darum wurden sie bei C++ ja auch eingeführt!) Also:

int fMakeMyDay(BOOL& iss, BOOL& isc)
{
iss = true;
}

und wenn du die Funktion aufrufst, brauchst du auch nicht mehr mit dem
Address-of-Operator rumzuhantieren, sondern schreibst einfach:

fMakeMyDay(IsStarted, IsConnected);

Ja voll geil. Da ist man doch gleich richtig gut beraten. Gibt es da
irgendwelche Sonderfälle?
Mit Zeigern habe ich es echt nicht so. Aber wie lernt man das richtig? So
einfache Zeiger verstehe ich ja noch aber Zeiger auf Zeiger und ähnliches?
Grauenvoll!

Quote:
Am besten, du besorgst dir mal ein gutes Einsteigerbuch über C++.
(Empfehlungen gingen vor kurzem ja wieder durch diese Gruppe.) Damit
du gar nicht erst anfängst, C++ im C-Stil zu schreiben. Denn das ist
und bleibt immer hässlich und ... fehleranfällig.

Hmmm wir haben hier welche rum zum liegen ... Werde mal in einer ruhigen
Minute das Studium vertiefen.

Danke
Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Stefan Goerres
Guest





PostPosted: Thu Apr 15, 2004 7:20 am    Post subject: Re: Pointer auf Bool? Reply with quote

Rolf Magnus wrote:
....

Quote:
Sagt er bestimmt nicht. Casten tut der Compiler nie selbst, das macht
immer der Programmierer. Du meinst vermutlich 'konvertieren'.

Bin ich nun total aufm Schlauch????

Du weist den Wert true dem Zeiger zu, nicht dem, worauf er zeigt.

Oder gar Holzweg?

Nein. Wenn du:

*IsStarted = true;

schreibst, sollte es gehen.

einen morgen später habe ich mir das überlegt ;)

Stefan

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Lars H. Rohwedder
Guest





PostPosted: Thu Apr 15, 2004 10:14 am    Post subject: Re: Pointer auf Bool? Reply with quote

Quote:
fMakeMyDay(IsStarted, IsConnected);

Ja voll geil. Da ist man doch gleich richtig gut beraten. Gibt es da
irgendwelche Sonderfälle?

Was für Sonderfälle meinst du?

Quote:
Mit Zeigern habe ich es echt nicht so. Aber wie lernt man das
richtig? So einfache Zeiger verstehe ich ja noch aber Zeiger auf
Zeiger und ähnliches? Grauenvoll!

Dann sei froh, dass du bei C++ gelandet bist. Da brauchst du viel
weniger Zeigerverrenkungen als bei C.

Im Übrigen ist das mit den Zeigern eine recht einfache Sache. Trotzdem
kann man halt sehr leicht großen Bockmist machen. Darum überlege ich
mir meist 3mal, ob ich für eine Problemlösung Zeiger benutze oder obs
nicht auch besser ohne geht.

Quote:
Am besten, du besorgst dir mal ein gutes Einsteigerbuch über C++.
(Empfehlungen gingen vor kurzem ja wieder durch diese Gruppe.) Damit
du gar nicht erst anfängst, C++ im C-Stil zu schreiben. Denn das ist
und bleibt immer hässlich und ... fehleranfällig.

Hmmm wir haben hier welche rum zum liegen ... Werde mal in einer
ruhigen Minute das Studium vertiefen.

Hoffentlich brauchbare Bücher... :-/

L.

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Marco Budde
Guest





PostPosted: Thu Apr 15, 2004 6:18 pm    Post subject: Re: Pointer auf Bool? Reply with quote

Stefan Goerres wrote:

Quote:
BOOL

Das ist kein ANSI C++, sondern der Schrott, den MS definiert.
Verwende bitte "bool" oder eine andere Newsgruppe Smile.

Quote:
false;

Bei der ANSI Variante richtig, bei WIN32 falsch. Hier wäre
"FALSE" korrekt.

Quote:
die gebe ich an an Funktion weiter welche einen Pointer übernehmen soll..
etwa so

fMakeMyDay(&IsStarted, &IsConnected);

diese soll die dann setzen so je nach Bedarf. Also in etwa so...

int fMakeMyDay(BOOL* IsStarted, BOOL* IsConnected)

So hätte man das in C gemacht, besser Referenzen, also:

int fMakeMyDay(bool &IsStarted, bool &IsConnected)

Außerdem sollten Get- bzw. Testmethode in der Regel immer nur
ein Ergebnis zur Zeit liefern und das meistens als Return
Value.

Quote:
{
...
// und nun setzen
IsStarted = true;

Das wäre bei den Referenzen richtig. Du arbeitest mit Pointern, also

*IsStarted = TRUE

cu, Marco
--
S: Minolta: Winkelsucher (VN), VC-9

E-Mail: mb-news-b<ät>linuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Marco Budde
Guest





PostPosted: Thu Apr 15, 2004 6:21 pm    Post subject: Re: Pointer auf Bool? Reply with quote

Stefan Goerres wrote:

Quote:
Ja voll geil. Da ist man doch gleich richtig gut beraten. Gibt es da
irgendwelche Sonderfälle?

Nö.

Quote:
Mit Zeigern habe ich es echt nicht so. Aber wie lernt man das richtig?

*Gute* Bücher lesen (Kernighan & Ritchie z.B.) und entwickeln,
entwickeln
und noch einmal entwickeln.

Quote:
So
einfache Zeiger verstehe ich ja noch aber Zeiger auf Zeiger und ähnliches?
Grauenvoll!

In C++ braucht man selten Zeiger.

Quote:
Hmmm wir haben hier welche rum zum liegen ... Werde mal in einer ruhigen
Minute das Studium vertiefen.

Leider gibt es auf dem Buchmarkt viel Müll. Deutsche Verlage scheinen
nicht fähig zu sein, hochwertige Bücher auf den Markt zu bringen.
Schau insb. beim US-A&W.

cu, Marco
--
S: Minolta: Winkelsucher (VN), VC-9

E-Mail: mb-news-b<ät>linuxhaven.de
Deutsches Linux HOWTO Projekt: http://www.linuxhaven.de

--
de.comp.lang.iso-c++ - Moderation: mailto:voyager+mod (AT) bud (DOT) prima.de
FAQ: http://www.voyager.prima.de/cpp/ mailto:voyager+send-faq (AT) bud (DOT) prima.de

Back to top
Display posts from previous:   
Post new topic   Reply to topic    C++Talk.NET Forum Index -> C++ (German) All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2006 phpBB Group
SEO toolkit © 2004-2006 webmedic.