"private" aktuell wertlos
Übersicht BlitzMax, BlitzMax NG Allgemein
Dreamora |
Fr, Jan 07, 2005 23:30 Antworten mit Zitat |
|
---|---|---|
Es funktioniert aber über den dynamic typecasting umweg. Etwas was man normalerweise nur tut wenn man bei einer klassendeklaration den abstrakten basistype genommen hat welcher dann beim erzeugen "raufgecastet" werden muss.
es funzt net umbedingt so wie es soll oder zu erwarten ist und schon garnicht so wie das woher es die technik klaut nämlich von C++ was ja auch den linker dahinter stellt. demon: die erklärtung von Bruzard funktioniert in dieser Form NICHT. aber mit seiner idee und masterk's einwurf von wegen interfaces in java ist mir etwas in den sinn gekommen das wir kürzlich im OO kurs an der ETH hatten, allerdings in einer komplett anderen anwendung ... aber es gab mir die immerhin ne idee was man probieren könnte. wollte damit den programmierern hier helfen, die module auf OO basis proggen und auch was davon verstehen und drum darauf nicht verzichten können. du kannst dann types draussen nur die abstrakte deklaration geben und die kann GARKEINE funktion oder etwas aufrufen. bevor du also postest, bitte erst hirn einschalten vor allem wenn du nix von der materie verstehst. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Demon |
Sa, Jan 08, 2005 0:03 Antworten mit Zitat |
|
---|---|---|
Es mag sein, dass du mir geistig überlegen bist, aber sogar ich als BMax Laie kann erkennen, dass du exakt diesen Vorschlag umgesetzt hast.
Wenn ich mir den Code von bruZard anschaue, fällt mir auf, dass du strukturell genau das Gleiche hast, mit der Ausnahme, dass du in deinem Stacktype eine Konstruktorfunktion definiert hast, die effektiv eine Erweiterung der eigenen Klasse zurückgibt. Damit hast du den manuellen Schritt von bruZard umgangen, bzw. ihn in eine public Funktion umgelagert. Wenn dem nicht so ist, bitte ich um eine Erläuterung in einfachen Worten für mich. |
||
Don't drink and derive! |
Dreamora |
Sa, Jan 08, 2005 1:52 Antworten mit Zitat |
|
---|---|---|
Diese kleine Konstruktorfunktion ist der einzige Grund, warum es überhaupt funktioniert. kannst es gerne mal ohne versuchen im falle von gewissen zweifeln und unglauben
Abstrakte funktionen kannst du nicht aufrufen, sie sind nur eine deklaration ohne jegliche implementation. insofern ist ein abstract im public und eine implementation im private in der form vollständig "nutzlos" da du nichts vom private type deklarieren kannst ausserhalb des modules. insofern kannst du auch nicht darauf zugreifen. Aber auf meinen Konstruktor kannst du zugreifen, da er sich dynamic binding zu nutze macht ( gott sei dank kann BM immerhin das ) um einen erweiterten type durch seinen public basistype zu übergeben. sorry wenn ich oben ein wenig harsch war, aber hat mich effektiv genervt, da ich seit gut 3 Tagen dran sitze irgendwie public private sinnvoll zum laufen zu bekommen. Die Java variante mit den interfaces war dabei die einzige die ich noch net versuchte, da ich davon ausging das BM sich GCC gemäss also C / C++ like verhalten würde ... naja fehlannahme. das thema läuft übrigens seit rund 1,5-2 wochen im englischen forum und bisher hatte auch dort keiner ne lösung wo bedeutend mehr leute aktiv sind als die 5 hier. ( oder falls sie wer hatte, hat er sie brav für sich behalten. jetzt wurde sie allerdings von Mark Tiffany direkt in die englische Wiki miteinbezogen, sollte also insofern in zukunft hoffentlich geklärt sein ) Wie auch geschrieben ist net alles auf meinem mist gewachsen, ohne bruzard's und masterk's ideen wäre mir dynamic binding wahrscheinlich garnicht in den sinn gekommen ... ich bin froh das es klappt, das ist für mich die hauptsache und ich denke andere hier sind froh dass es nu eine einfache und leicht verständliche erklärung gibt, wie man es zum laufen bekommt. ich werde mir allerdings in zukunft überlegen solche dinge noch ins D board zu posten, da sich hier nur wenige die mühe machen mitzuhelfen in solchen dingen aber ständig blöde sprüche hinten vor kommen wenn die lösung "simpel erscheint". leute wie du demon dürfen gerne selbst 5-10h das englische board nach lösungsvorschlägen und ansätzen durchforsten weil sie es selbst nicht aktiv lesen und mitverfolgen. |
||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Jolinah |
Sa, Jan 08, 2005 18:19 Antworten mit Zitat |
|
---|---|---|
Gute Lösung Dreamora
Ich hatte auch schon rumprobiert, wäre aber niemals auf sowas gekommen *g*. Dennoch wärs viel besser wenn man Private und Public so nutzen kann wie in anderen Sprachen auch. Code: [AUSKLAPPEN] Type bla Private Field x Method ModifyX() x = x + 3 End Method Public Method SetX(x) Self.x = x ModifyX() End Method Method GetX() Return x End Method End Type |
||
Dreamora |
Sa, Jan 08, 2005 19:12 Antworten mit Zitat |
|
---|---|---|
ja besser wärs durchaus. da man sich so die "doppelte Arbeit" der deklaration ersparen könnte. aber ich denke wenn man sich daran gewöhnt hat, hat es auch vorteile ... und verhindert das es in so grausig designeten code liefert, wie C++ ihn zulässt ( und auch häufig dazu verleitet ) | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
Demon |
So, Jan 09, 2005 13:51 Antworten mit Zitat |
|
---|---|---|
Naja, für Methoden funktioniert das ja immerhin .
Code: [AUSKLAPPEN] Type TTest Method MySin:Float(x:Float) Private Return Sin(x) EndMethod Method PublicSin(x:Float) Return MySin(x) EndMethod EndType |
||
Don't drink and derive! |
Übersicht BlitzMax, BlitzMax NG Allgemein
Powered by phpBB © 2001 - 2006, phpBB Group