Umstieg von Blitz zu C++

Übersicht Sonstiges Smalltalk

Neue Antwort erstellen

 

mevsmp

Betreff: Umstieg von Blitz zu C++

BeitragDo, Nov 11, 2010 17:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich hab es nun gewagt mich einwenig von Basic zu trennen und in c++ einzusteigen. Soweit so gut.
Was mir am meisten in Blitz gefallen hat, waren Types.
Wie man Felder in C++ erstellt weiß ich bereits, das ist ja das selbe wie Dim-Felder in Blitz..
Doch wie siehts mit Types aus in c++? Gibt es da etwas ähnlches in der Art?

Also zb.:
Code: [AUSKLAPPEN]

type auto
field posx
field posy
field schaden
end type

if keyhit(2)
for au.auto=new auto
au\posx=1
au\posy=100
au\schaden=0
endif

dann zum updaten zb:

for au.auto=each auto
if au\schaden=100
    delete auto
endif
next




MfG
 

Macintosh

BeitragDo, Nov 11, 2010 17:46
Antworten mit Zitat
Benutzer-Profile anzeigen
Structs.
Gibts auch schon in C :)

Code: [AUSKLAPPEN]
struct auto {

int posx;
int posy;
int schaden;

}

//neues Auto Erstellen
struct auto meinAuto;

meinAuto.posx = 100;
//...



diese "Felder" nennt man übrigens Array's :)
 

mevsmp

BeitragDo, Nov 11, 2010 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
hm ganz verstanden hab ich das nicht. bei dir wird ja das auto fest als "meinAuto" defininiert.
was ist nun aber wenn ich meine 100 erstellten autos updaten möchte?
und zb. auto nr. 43 schon gelöscht wurde.
wäre schön wenn du meinen blitzcode mal genauer umwandeln könntest..

Thunder

BeitragDo, Nov 11, 2010 18:02
Antworten mit Zitat
Benutzer-Profile anzeigen
Macintosh: Dein Code ist C-Code und dürfte unter C++ gar nicht laufen und hat auch einen Fehler, der einen C-Compiler aufschreien ließe. Nach der Deklaration der Struktur fehlt ein Strichpunkt und ein kleingeschriebenes 'auto' ist in C ein Attribut für Funktionen bzw. Variablen - darfst du daher nicht als Name der Struktur verwenden.

In C++ gibt es statt Strukturen oder BB-Types Klassen. Diese können mit dem Schlüsselwort class definiert werden. Zusätzlich kann man in Klassen Methoden (Funktion innerhalb einer Klasse) deklarieren, die nur auf Objekten der Klasse angewandt werden können. Außerdem kannst du Methoden bzw. Instanzvariablen in verschiedenen Zugriffsbereichen (public, private, protected) definieren.

Frage von meiner Seite: Wenn du das nicht weißt, wieso denkst du dann ans Umsteigen?

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

mevsmp

BeitragDo, Nov 11, 2010 18:17
Antworten mit Zitat
Benutzer-Profile anzeigen
verstehe ich deine Frage richtig, du fragst mich wieso ich umsteigen will obwohl ich nicht weiß wie man es c++ lösen kann?? Das macht doch keinen Sinn. Ich möchte anfangen c++ zu lernen, selbstverständlich kann ich es nicht von geburt an Smile Und da ich noch blutiger Anfänger in C bin, hat mir deine Auflistung leider auch nicht viel gebracht, ein Beispiel wäre schön.

Thunder

BeitragDo, Nov 11, 2010 18:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Gut, dann habe ich dich falsch verstanden.
Also erst Mal kann ich deinen Type in C++ folgendermaßen deklarieren:
Code: [AUSKLAPPEN]
class Auto{
    public:
    int posx, posy;
    int schaden;
   
    Auto(int x,int y){ //Konstruktor
        posx=x;
        posy=y;
        schaden=0;
    }
}

Ein neues Auto erstelle ich mit der Zeile
Code: [AUSKLAPPEN]
Auto au(1,100) // dabei wird posx zu 1 und posy zu 100 - wegen dem Konstruktor


Wichtig ist aber, dass ein BlitzBasic Type eine doppelt verkettete Liste "ist". Dass heißt, wenn du zwei Mal schreibst "au.Auto=new Auto", so geht das erste Auto nicht verloren. In C++ schon, daher müsstest du dir, um das Beispiel korrekt umzusetzen, eine doppelt verkettete Liste in C++ schreiben oder ein Array nehmen.

Außerdem reicht es nicht, sich hier erklären zu lassen wie man umsteigt. C++ und BlitzBasic sind so unterschiedlich, dass es naheliegender wäre, C++ von Grund auf zu lernen, wenn du es wirklich willst. Dazu würde ich ein Buch empfehlen.

mfg Thunder
Meine Sachen: https://bitbucket.org/chtisgit https://github.com/chtisgit
 

Macintosh

BeitragDo, Nov 11, 2010 20:30
Antworten mit Zitat
Benutzer-Profile anzeigen
ups. sorry ^^ kann ja mal passieren, das man das ; vergisst und an das auto hab ich grad auch nicht gedacht.
Ging ja aber eig auch mehr um das "wesentliche".

BlitzBasic "Types" sind aber keine Klassen, sondern eher structs.
 

CO2

ehemals "SirMO"

BeitragDo, Nov 11, 2010 21:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich will hier auch mal ein Begriff hinschmeißen: Unions - Was das nochmal genau war, weiß ich gerade nicht mehr (wie lange ist das her, das ich das letzte mal C++ programmiert hab^^), hatte aber auch was mit Klassen und Structs zu tun Wink

mfG,
CO2
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

Macintosh

BeitragDo, Nov 11, 2010 21:51
Antworten mit Zitat
Benutzer-Profile anzeigen
ein Union ist eine Art Struct, braucht aber nur soviel Speicher wie seine größte Variable.
Alle Variablen liegen auf dem dem selben speicherplatz -> nur 1 ist nutzbar, die anderen dürften dann "garbage" enthalten.
glaub das war so :D

Währe aber in diesem Fall eher unnütz.

BladeRunner

Moderator

BeitragFr, Nov 12, 2010 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Linked Lists etc. sind zB in der STL zu finden.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92

Neue Antwort erstellen


Übersicht Sonstiges Smalltalk

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group