Umstieg von Blitz zu C++
Übersicht Sonstiges Smalltalk
mevsmpBetreff: Umstieg von Blitz zu C++ |
Do, Nov 11, 2010 17:41 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Nov 11, 2010 17:46 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Nov 11, 2010 17:59 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Nov 11, 2010 18:02 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Nov 11, 2010 18:17 Antworten mit Zitat |
|
---|---|---|
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 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 |
Do, Nov 11, 2010 18:24 Antworten mit Zitat |
|
---|---|---|
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 |
Do, Nov 11, 2010 20:30 Antworten mit Zitat |
|
---|---|---|
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. |
||
CO2ehemals "SirMO" |
Do, Nov 11, 2010 21:44 Antworten mit Zitat |
|
---|---|---|
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
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 |
Do, Nov 11, 2010 21:51 Antworten mit Zitat |
|
---|---|---|
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. |
||
BladeRunnerModerator |
Fr, Nov 12, 2010 16:56 Antworten mit Zitat |
|
---|---|---|
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 |
Übersicht Sonstiges Smalltalk
Powered by phpBB © 2001 - 2006, phpBB Group