Ist eigentlich kein alzugroßer Unterschied zwischen C++ und C# (ok mein C# wissen ist ein wenig begrenzt, aber mir ist noch nicht so viel aufgefallen, was jetzt komplett anders ist ^^)
Zuerst mal weg mit "ref"
Und dann eigentlich genau das gleiche wie in C#
Du definierst einen Konstruktor, der zwei parameter erwartet und die Funktion.
Also sind wir schonmal bei in etwa dem:
Code:
class test
{
public:
test( int a, int b);
void check( int c, int &bOut);
};
Das int
&bOut (man beachte das &) sagt dem Compiler, dass er nicht den Wert der Variable übergeben soll, sondern eine Referenz auf die Variable. So kannst du die Variable inerhalb der Methode ändern, was dann ungefähr so aussehen würde:
Code:
void test::check( int c, int &bOut)
{
bOut = c;
}
Wenn du in C++ mit new eine Instanz einer Klasse erstellst, bekommst du einen Zeiger auf ein Objekt. Also muss das Objekt dann so erstellt werden:
Code:
test* t = new test( 1, 2 );
Oder du erstellst eine lokale Variable, dann ist das nur
Code:
test t(1, 2);
Wenn du dann jetzt die check methode aufrufen willst, sieht das so aus:
Code:
int b = 12;
t->check( 3, b );
// b ist jetzt 3
Wenn du eine lokale Variable gemacht hast, dann musst du anstatt -> einen punkt schreiben.
Und da du den Speicher mit new angefordert hast, musst du (dh solltest du auf jeden Fall) ihn auch wieder mit delete freigeben, wenn du das Objekt nichtmehr brauchst.
Code:
delete t;
Man merkt aber doch schon, dass du arg C# geschädigt bist
Vielleicht solltest du dir mal ein kleines tutorial zu C++ durchlesen (da du c# kannst sollte sich der aufwand dafür doch arg in grenzen halten, da du dir ja nur den Syntax angucken musst). Oder zumindest mal nach ner Auflistung der Unterschiede zwischen C# und C++ suchen.
P.S.:
Ach ja und noch was: "#pragma once" kennt nur der Microsoft compiler. Wenn du ( und das solltest du eigentlich
) compiler unabhängig programmieren willst, verwende sog. Include-Guards.
Das versteht jeder Compiler:
Code:
#ifndef IRGEND_EIN_NAME_AM_BESTEN_DER_DER_DATEI
#define IRGEND_EIN_NAME_AM_BESTEN_DER_DER_DATEI
// hier kommt der code
#endif
Dann guckt der Präprozessor, ob dieses define schon existiert (was es nicht tun sollte) und definiert es falls es nicht der fall war und wertet den Programmcode aus. Wenn das define schon existiert, dann wurde die Datei schon einmal eingebunden, und durch das if - endif wird alles was drin steht ignoriert.
_________________
Phenom X4 9950 BE | 6144MB DDR2-800 | GeForce 8800GT 512MB | Asus M3A32-MVP Deluxe | 2TB HDD | 520W Seasonic NT | Soprano Tower | Samsung 22" TFT + Fujitsu-Siemens 17" TFT + Toshiba 42" FullHD LCD | Windows 7 Proessional x64
Behind the Brain