Type Casting

Übersicht BlitzMax, BlitzMax NG Allgemein

Neue Antwort erstellen

Farbfinsternis

Betreff: Type Casting

BeitragSo, Mai 15, 2011 16:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Irgendwie bin ich gerade etwas verwirrt. Könnte mir mal jemand erklären warum ich meinen Basis-Type nicht auf die erweiterte Version casten darf?

BlitzMax: [AUSKLAPPEN]
Type typeA
' some basic magic
End Type

Type typeB Extends typeA
' some extended magic
End Type

Local a:typeA = New typeA
Local b:typeB = typeB(a)

DebugStop()


Schonmal danke für jeden sachdienlichen Hinweis Smile
Farbfinsternis.tv

Xeres

Moderator

BeitragSo, Mai 15, 2011 16:56
Antworten mit Zitat
Benutzer-Profile anzeigen
B ist auch A, aber A ist nicht B.
Du kannst B zu A casten, nicht aber anders herum.

Edit: Ein Vehikel(A) ist kein Auto(B), aber ein Auto(B) ist immer ein Vehikel(A).
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)

Farbfinsternis

BeitragSo, Mai 15, 2011 17:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Na geil, also doch wieder drei Tonnen mehr Code .... danke.
Farbfinsternis.tv

Farbfinsternis

BeitragSo, Mai 15, 2011 17:32
Antworten mit Zitat
Benutzer-Profile anzeigen
Es gibt eine Lösung:

BlitzMax: [AUSKLAPPEN]
Const TYPE_CLASS_B:Int		= 1
Const TYPE_CLASS_C:Int = 2

Type Manager
Method Create:Object(typ:Int)
Local temp:Object

Select typ
Case 1 ; temp = New typeB; typeB(temp).i = typ
Case 2 ; temp = New typeC; typeC(temp).i = typ
End Select

Return temp
End Method
End Type

Type typeA
Field i:Int
End Type

Type typeB Extends typeA
End Type

Type typeC Extends typeA
End Type


Local man:Manager = New Manager

Local class_b:typeB = typeB(man.Create(TYPE_CLASS_B))

DebugLog "type: " + String(class_b.i)


Hintergrund ist dass ich gerade OIS wrappe und dort der InputManager ein Objekt vom Typ OIS::InputObject zurück gibt welches dann auf das entsprechende Device gecastet werden muss, also OIS::Mouse, OIS::Keyboard etc....
Farbfinsternis.tv

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group