Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » C / C++ (ANSI-Standard) » Referenz von inline erzeugtem Objekt

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 <
000
13.03.2012, 08:42 Uhr
~Romanoir
Gast


Hallo zusammen,

Vermutlich ein einfaches Problem, aber meine Suche hat bisher nicht gefruchtet:
Ich möchte aus kompatibilitätsgründen einen alten Code nach ANSI-C++ konvertieren, den ich seinerzeit mit MSVS geschrieben hatte und der an einigen Stellen "unsaubere" Syntax verwendet. Bei der Konvertierung macht mir eine Stelle großes Kopfzerbrechen und ich bitte Euch um Hilfe:

Es soll eine Funktion aufgerufen werden, die u.a. eine Referenz auf eine eigene Klasse vector übergeben bekommt:

double test(double f,vector& V);

...

beim Aufruf von test hatte ich das gelegentlich so gemacht, daß ein beim Aufruf frisch erzeugtes Objekt direkt übergeben wird.
also eta so:
result=test(17.5,vector(1,2,-1));

Wenn ich die MS-language Extensions ausschalte geht das nun nicht mehr und der gcc beschwert sich z.B. dass er jetzt keine Referenz bekommt und findet die Funktion test nicht.

Kann mir jemand sagen wie ich diese Zeile in "saubere" Ansi-Syntax umschreiben muss um sie in vergleichbarer Form zu nutzen.

Vielen Dank für Eure Hilfe,

r.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
13.03.2012, 09:48 Uhr
0xdeadbeef
Gott
(Operator)


Wenn du den Vektor intern nicht veränderst,

C++:
double test(double f, vector const &V);


Ansonsten darf der Parameter nicht temporär sein, d.h.

C++:
{
  vector v(1, 2, -1);
  result = test(17.5, v);
}


In C++11 sollte das auch mit rvalue-Referenzen gehen, also

C++:
double test(double f, vector &&V);


Daran kann man temporäre Objekte binden. Das geht meines Wissens ab VS 2010, und beim gcc musst du dann -std=c++0x übergeben.
--
Einfachheit ist Voraussetzung für Zuverlässigkeit.
-- Edsger Wybe Dijkstra

Dieser Post wurde am 13.03.2012 um 09:49 Uhr von 0xdeadbeef editiert.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
13.03.2012, 19:08 Uhr
~Romanoir
Gast


Hallo Deadbeef,

danke für Deine Hilfe.
Die inflationäre Verwendung von "const" hat tatsächlich abhilfe gebracht.

Gruß,

r.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 <     [ 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: