EDIT: Und es gibt noch Probleme bei zyklischen Abhängigkeiten. Ich weiß nur nicht, wie leicht sowas behebbar ist. Jedenfalls wenn ich zwei Dateien hab, die gegenseitig ihre Klassen benutzen (und sich über XIncludeFile einbinden), dann kann temporär die eine Datei nicht erstellt werden. Aber es kann sein, daß das bei mir in der Praxis anders aussehen wird (hängt ja auch davon ab, wie man sein Projekt strukturiert), ich hab jetzt nur mal ein bißchen rumprobiert mit ein paar Testklassen und da ist mir das eben aufgefallen.
Ich kann dir nur wage folgen, bitte sende mir einen Link zu den Dateien als Zip Datei, damit ich das prüfen kann. Wenn du Vista hast MUSST du mindestens Revision 1.0r58 haben, vorher gab es einen Bug bzgl. des Festellens des PB Pfades.
http://pb-oop.origo.ethz.ch/wiki/changelog
Mir ist grad aufgefallen, daß ich gezwungen bin, erst alle Methoden und danach die Variablen zu deklarieren. Mache ich es andersrum, erhalte ich einen Garbage-To-The-End-Of-Line-Fehler. Wäre noch ganz schick, wenn Du das beheben könntest
Das geht deshalb nicht, da erst das "Interface" und dann die "Structure" im Code erfolgen, würde ich den Anwender Methoden und Attribute mischen lassen, wäre eine Debugger kompatible Ausgabe dahin. Und das ist imho Priorität. Schaue dir mal die Codeausgabe im User / Temp Verzeichnis von Windows an, wo auch sonst PB die Files temporär ablegt, dann wirst du verstehen was ich meine.
EDIT: Hab's rausgefunden über Flex also... okay, muß man wissen
Wäre schön, wenn wenigstens eine Warnung kommen würde, wenn man in einer abgeleiteten Klasse eine Methode deklariert, die in der Superklasse bereits existiert, aber nicht als Flex deklariert ist.
Mit allem Respekt und Ehren ..."Muss man wissen"? Steht doch alles genau in der Dokumentation?

(Genauso wie das mit erst den Methoden und dann den Attributen in einer Klasse)
http://pb-oop.origo.ethz.ch/wiki/Polymorphism
Und bzgl. der Warnung? Warum? Das ist Polymorphie und das Prinzip hier ist wie bei C++, die Priorität liegt vorerst auf den Methoden der Basisklasse. Gehe ich jedoch hin und markiere die Methoden in der Basisklasse als virtuelle Methoden via "Flex" so wird diejenige der Masterklasse genutzt. Da spukt dir VC++ o.ä. auch keinen Fehler aus.
Muß aber noch ein bißchen Kritik loswerden, und zwar find ich es ziemlich unpassend daß der Konstruktor so heißen muß wie die Klasse, der Destruktor heißt aber Release(). Erstens gibt's sicherlich viele Klassen, bei denen man eine Release()-Methode für andere Zwecke hätte, und zweitens ist das insgesamt nicht besonders konsistent. Eine weitaus bessere Lösung wäre meiner Meinung nach Constructor() und Destructor(), oder NewObject() und DeleteObject() oder sonst irgendwas, aber KlassenName() und Release() ist meiner Meinung nach keine schöne Lösung.
Jeder will es anders haben ich weiss, daher sehe ich es nicht als Kritik, sondern als einen persönlichen Gusto, der vieles auch hier im nativen Purebasic anders sein lassen würde (siehe das Thema "ProcedureReturn").

Das Prinzip dieser OOP Implementation wird sehr den bewährten OOP Logiken anderer Sprachen entsprechen, aber jedoch weitestgehend mit einer soweit es geht PureBasic entsprechenden Syntax.
Ich habe mich dafür entschieden weil viele Programmierer es von C++ und C# her kennen und es sich auch so gut bewährt hat. Warum also das Rad neu erfinden.
This\Release() als aufzurufenden Destruktor wird bald obsolet in diesem Parser sein, da DeleteObject diesen sodann intern automatisch aufruft wenn vorhanden.
Konstruktoren und Destruktoren müssen/werden sodann gar nicht mehr manuell aufgerufen, das macht sodann alles NewObject und DeleteObject.
This\Release() ist hier genutzt worden weil es wenigstens zu Übergangszwecken ein wenig der Logik von COM Objekten entspricht.
Und noch was... das mit den PB-Keywords klappt bei mir immer noch nicht :/ -> hab's grad gemerkt, die EXE in Deiner r60-Version ist nicht die aktuelle, nur die in Deiner Standalone-Version. Hab sie ersetzt
Die r60 hat NICHTS an den Keywords geändert, ... sorry aber zu deiner Fett-Schreibweise: Im Changelog steht ganz explizit, dass r60 in seiner Unterscheidung nur etwas mit der Namensgebung des Standalone Plugins zu tun hat.
http://pb-oop.origo.ethz.ch/wiki/changelog
Wenn du bereits einmal den Installer genutzt hast, reicht es übrigens wenn du lediglich das Standalone PlugIn mit dem neuen überschreibst.
Dann gehe doch bitte mal in deiner aktuellen 4.10er PB Version hin und prüfe die Keyword Einstellungen in den Preferences! Bei jaPBe scheints ja deinen Post von der vorherigen Seite nach her zu stimmen.
Du solltest mir auch wie bereits in ein paar Beiträgen zuvor erwähnt dein PureBasic.prefs File zusenden. Please.
Lieber ZeHa

,
bevor du aber ausholst und wir hier aber über Syntax-Geschmäcker diskutieren, wäre es mir eine größere Hilfe, wenn man mir nicht nur sagt was nicht gut ist und was so vieles nicht klappt, sondern wenn du aktiv mir bei der Bugbeseitigung hilfst und das geht durch Beispiele von genutzten Codes und zusenden von Dateien (Prefs etc.).
Lese dir die Doku durch, wenn da etwas unleserlich vorkommt oder sie für dich im vorab Beta Stadium schlecht aufgebaut ist, dann sage es mir, denn das bringt mich weiter, nicht jedoch Unklarheiten, welche keine Sind, weil in der Doku bereits erklärt.
Ein Grund übrigens warum ich mich für jene Versionskontrolle bei Origo entschieden habe.