Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Zeiger vs Referenz

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
27.10.2003, 19:30 Uhr
typecast
aka loddab
(Operator)


Ich versteh C++ einfach nicht mehr:

Ich habe folgenden Funktionskopf:


C++:
void Klasse::funktion(const QPoint* b, const QPoint* e)



Diese Funktion rufe ich jetzt mit einer von mir erstellten QPointzeiger b und einem Punkt auf der, als const QPoint& von einer Funktion zurückgeliefert wird. Dabei kommt dann der Fehler
no matching funktion bla bla.

Wenn ich aber die Mehtode mit

C++:
funktion(begin, [b]&[/b]QPoint(x,y));


aufrufe, dann schluckt er das ohne eine Warnung oder sonstiges Gemecker. Warum??????
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
27.10.2003, 19:33 Uhr
Pablo
Supertux
(Operator)


Ist QPoint(x,y) ein Zeiger, oder Variable?
Ich nehme an, QPoint ist der Konstruktor der Klasse, QPoint oder, oder ist eine Funktion, die ein QPoint zurückliefert?

Wenn es sich um keinen Pointer handelt, dann ist es logisch, denn eine Adresse erwartet wird und &QPoint(x,y) liefert die gewünschte Adresse, oder irre ich mich?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
27.10.2003, 19:35 Uhr
typecast
aka loddab
(Operator)


QPoint ist der Konstruktor, und das es funktioniert verstehe ich auch, aber ich verstehe nicht, warum das erste nicht funktioniert
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
27.10.2003, 19:37 Uhr
Pablo
Supertux
(Operator)



C++:
funktion(begin, QPoint(x,y));



Hab ich richtig verstanden, dass es so nicht geht?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!

Dieser Post wurde am 27.10.2003 um 19:37 Uhr von Pablo Yanez Trujillo editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
27.10.2003, 19:42 Uhr
typecast
aka loddab
(Operator)


So nicht, du musst noch ein & vor das QPoint(..) stellen, dann geht es.

Was ich meine ist, wenn ich das &QPoint durch eine Funktion ersetze, die eine Variable vom Typ const &QPoint zurückliefert, dann funktioniert es nicht.
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
27.10.2003, 19:47 Uhr
Pablo
Supertux
(Operator)


Ich bin nicht sicher, was ein Konstruktor zurückliefert. Liefert er eine Referenz oder einen Pointer oder keins von beiden zurück? Sorry, ich kenn mich nicht so gut mir den Klassen aus, deshalb weiß ich nicht so ganz, warum, aber wie wäre es wenn du function ohne einen Pointer deklarierst, sondern mit einer Referenz?
--
A! Elbereth Gilthoniel!
silivren penna míriel
o menel aglar elenath,
Gilthoniel, A! Elbereth!
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
27.10.2003, 19:51 Uhr
virtual
Sexiest Bit alive
(Operator)


Ich verstehe die Frage noch immer nicht:
const & QPoint ist kein gültiger C++ Ausdruck. Meinst Du, daß die Variable const QPoint& zurückliefert? Das ginge tatsächlich nicht, weil sich const QPointer& und const QPointer* Um ein inderectionsLevel unterscheiden: letzteres ist ein pointer, ersteres eben eine Referenz. Eine Referenz ist kein Pointer, sondern nur ein Aliasname für ein Objekt.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
27.10.2003, 19:53 Uhr
typecast
aka loddab
(Operator)


Ja du hast recht, es muss const QPoint& heißen

Aber ich mache doch mit dem &-Operator mit dem Konstruktor nichts anderes, als einen Referenz zu übergeben. Warum funktioniert das da?
--
All parts should go together without forcing. ... By all means, do not use a hammer. (IBM maintenance manual, 1925)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
27.10.2003, 20:04 Uhr
virtual
Sexiest Bit alive
(Operator)


Du meinst das hier?

C++:
funktion(begin, &QPoint(x,y));


Nein, da ist keine Referenz. QPoint(x,y) erzeugt ein lokales Object, mit dem & Operator ermittelst Du einen Zeiger auf eben dieses lokale Objekt und übergibst es funktion.
--
Gruß, virtual
Quote of the Month
Ich eß' nur was ein Gesicht hat (Creme 21)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
27.10.2003, 21:15 Uhr
(un)wissender
Niveauwart


Der &operator gibt, wenn nicht falsch überladen, keine Referenz zurück, sondern einen Pointer.
Aber das hat virtual ja schon gesagt!
Deine Funktion müsste also const QPoint * zurückgeben, nicht const QPoint &.
Da würde ich aber aufpassen, da du, wenn du Pointer zurückgibst, darauf achten mußt, dass sie gültig sind bzw. auch wieder gelösct werden.
--
Wer früher stirbt ist länger tot.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ 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: