![]() |
Re: Verhindern von Instanzierung eines Objekts mit Create
Zitat:
|
Re: Verhindern von Instanzierung eines Objekts mit Create
Bin mit Delphi nicht mehr so am laufenden, aber in C# kämen folgende Möglichkeiten in Frage:
|
Re: Verhindern von Instanzierung eines Objekts mit Create
Hi,
ich sagte ja, eine bessere Idee hab auch ich nicht. Aber wenn der User keine DDevExtensions hat, sieht er trotzdem die Warnung (nur eben als Warnung), und da steht drin, dass der Konstruktor selbst abstrakt ist. Ein guter Programmierer sieht sich die Warnungen auch mal an, und spätestens dann bemerkt er seien Fehler. Bei strict private kommt nicht einmal eine Warnung :( Jedenfalls bin ich der Ansicht, dass ein abstrakter Konstruktor deutlich besser ist als ein privater. Wer sicher gehen will, zwingt dem Programmierer eben komische Parameter auf.
Delphi-Quellcode:
Aber darauf würde ich sogar verzichten.
type
TTest = class constructor Create(var Do_Not_Call_This_Constructor: TTest); virtual; abstract; end; Mfg FAlter |
Re: Verhindern von Instanzierung eines Objekts mit Create
Code:
Und wie wäre es in soeinem Fall garnicht erst eine Klasse zu verwenden?
type
TMyClass = [color=#ff0000]record[/color] strict private class var FX: Integer; strict protected // Note: accessors for class properties must be declared class static. class function GetX: Integer; static; class procedure SetX(val: Integer); static; public class property X: Integer read GetX write SetX; class procedure StatProc(s: String); static; end; ein Record hat Erstens keine Instanzen und Zweitens hat er in Delphi auch keinen Constructor. |
Re: Verhindern von Instanzierung eines Objekts mit Create
Was ist denn wenn man die Klasse selber als abstract deklariert ?!?!
|
Re: Verhindern von Instanzierung eines Objekts mit Create
Liest Du die oberen Beiträge?
Zitat:
|
Re: Verhindern von Instanzierung eines Objekts mit Create
class abstract
Classes, and not just methods, can be declared as abstract. type TAbstractClass = class abstract procedure SomeProcedure; end; ![]() |
Re: Verhindern von Instanzierung eines Objekts mit Create
Oh mann..
Das ist neu in Delphi 2007. Du hast wohl nicht geguckt, welche Delphi-Version der OP benutzt? |
Re: Verhindern von Instanzierung eines Objekts mit Create
Immer locker bleiben,
wollte ja nur aufzeigen dass es möglich ist. |
Re: Verhindern von Instanzierung eines Objekts mit Create
Zitat:
Die ![]() Zitat:
Und in der Tat kann ich in Delphi 2006 eine als 'sealed' gekennzeichnete Klasse erstellen, die sich auch wirklich nicht ableiten lässt. Nur 'abstract' muckt ein bissel rum. [OT] Desweiteren war Dein Umgangston gegenüber bennixview nicht gerade nett. Nur mal so angemerkt, im Zuge der hiesigen Diskussionen zu den Themen 'Neue Leute', 'Jeder hat eine Chance', 'Reizbarkeit'... Manchmal habe ich echt das Gefühl, dass hier einiges vertauscht wird. Der, der helfen will, kriegt eins auf den Deckel, wenns mal falsch ist (was es hier definitiv nicht war), und die wirklichen Nervensägen kriegen Zucker in den Arsch geblasen. [/OT] Edit: da ich ja auch manchmal etwas überreizt bin und mit meinen Interpretationen daneben haue - sollte ich Deine Äußerungen falsch verstanden haben - sorry. Ansonsten - denk mal drüber nach. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:22 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz