schon wieder Pointerprobleme ...
-
Hi, ich hätte da gern mal ein problem.
wie mache ich es, ein object als pointer zu übergeben, und trotzdem mit
".bottom" zu arbeiten. den rückgabewert brauch ich im prog für was anderes.
bei dem text unten kommt der Fehler"c:\test\main.cpp(9): error C2228: Der linke Teil von '.bottom' muss eine Klasse/Struktur/Union sein"
#include <stdio.h> #include <iostream> //ehemals <iostream.h> #include <windows.h> void Fill_Rect(RECT *rect) { *rect.bottom=100; } void main() { RECT rect; Fill_Rect(&rect); cout << rect.bottom; }
geht das überheupt?
MFG
P_o_t_f
-
void Fill_Rect(RECT *rect) { rect->bottom=100; }
edit: obiges ist äquivalent zu (*rect).bottom=100;
-
Der "."-Operator ist höher in der Wertigkeit als der Dereferenzierungsoperator ("*"-Operator), also musst du entweder Klammern setzen:
(*rect).bottom
Oder benützt den dafür extra vorgesehenen "->"-Operator:
rect->bottom
MfG SideWinder
-
Vielen vielen dank.
also dafür ist "->"
hab ich nirgends gefunden. überall hies es nur das man "." für das eine und
"->" für das andere benützen muss.Und noch ma: THX
-
und wenn man dann einen pointer auf einen pointer übergibt?
geht dann "->->"?
-
Pheonix_on_the_fly schrieb:
und wenn man dann einen pointer auf einen pointer übergibt?
geht dann "->->"?
nee.
dann geht wie gewohnt (**a).f() oder (*a)->f().
-
btw.
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=main#Answ
http://fara.cs.uni-potsdam.de/~kaufmann/?page=GenCppFaqs&faq=iostream#Answ
-
btw:
referenzen! dann kannst du auch die punkt-schreibweise behalten
-
ahh, ok then.
@kingruedi:
Die links sind ja wunderschön, blos fang ich mit denen nix anda sich das hier gezeigte programm nur beispielprogramm schimpft,
ist es mir gestattet äussere gepflogenheiten wie parameterübergabe
oder rückgabewert in der main-prozedur zu übergehen bzw. wegzulassen.
aber das mit iostream is mir neu, ist also .h die alte? dachte immer
es is egal welche ich include... nagut, wird ausgebessert.