![]() |
AW: was ist der Sinn von Templates/Generics ?
Ein Class.Create Constructor gibt per Definition IMMER das Objekt zurück und wenn nicht, dann wird ordnungsgemäß eine Exception geworfen.
|
AW: was ist der Sinn von Templates/Generics ?
Und weshalb werden hier immer wieder unaufgefordert solche Code-Monster gepostet, die doch kein Mensch liest? TL;DR
|
AW: was ist der Sinn von Templates/Generics ?
Zitat:
|
AW: was ist der Sinn von Templates/Generics ?
in dem Zusammenhang mit Templates (jetzt in GNU C++) ...
Code:
in der Funktion oben caste ich einen bereits erstellten Klassen-Pointer (vieleicht nicht die beste Lösung, aber das sei erstmal dahingestellt).
class TObject {
public: virtual std::string ClassName() const; virtual ~TObject(); }; template <typename T> class QChar: public TObject { public: // constructor QChar(T); }; extern "C" { DLL_EXPORT bool isBlank_QChar(uint64_t addr) { auto * objptr = reinterpret_cast<qvc::QChar*>(addr); check_pointer(addr, reinterpret_cast<uint64_t>(objptr)); std::cout << "objptr = " << objptr->ClassName() << std::endl; if (objptr->isBlank()) return true; return false; } }; Die Frage ist aber nun: wie kann ich in der Zeile:
Code:
den Typen erhalten ?
auto * objptr = reinterpret_cast<qvc::QChar*>(addr);
muss ich dazu den Typen während der Initialization speichern, um ihn dann and <qvc::QChar*> angeben zu können ? wie macht man das ? |
AW: was ist der Sinn von Templates/Generics ?
Free im Constructor ist nicht zulässig, da dann ein Zeiger auf die nicht mehr existierende Objectinstance zurückgegeben wird.
Die einzige Möglichkeit den Constructor abzubrechen ist eine Exception. Ich habe noch nicht verstanden was du eigentlich erreichen willst. Vieleicht erklärst du das ausführlicher. Wahrscheinlich ist das sogar ein neues Thema. Leitet man von einem Generic eine konkrete Klasse ab, bestimmt man damit Classname selbst. Ist ein Object erstellt, kann man auf Object.ClassName und Object.ClassType zugreifen. Erstellt man ein Object direkt von einem Generic, leitet Delphi selbständig eine konkrete Klasse ab. |
AW: was ist der Sinn von Templates/Generics ?
ich habe das ganze schon fast gelöst, das Projekt kann in meinen letzten Link betrachtet werden.
Das Projekt, an dem ich gerade sitze ist folgendes: - FPC mit GNU C++ zu kombinieren, so dass dann: - die FPC VCL (die der Delphi VCL entspricht) mit den GNU C++ zu verknüpfen. so hat man dann einheitliche Funktionen, die sowohl in FPC und GNU C++ verwendet werden können. Erst wollte ich das Qt-Framework, das unter GNU C++ geschrieben wurde in FPC zugänglich machen. Aber da gibt es schon anstrengungen, die mir aber nicht gefallen, da diese vorwiegend prozedural gehalten sind - mein Ansatz aber das Klassen-Model nutzen soll, so dass man dann nicht mehr: ptr := Create_QWidget(); hat, sondern: ptr := QWidget.Create; was für mich eindeutig komfortabler ist. Da ich nun verschiedene Datentypen unterstützen würde, habe ich erstmal normale klassische OOP angewendet. Jetzt aber auf den aufsteigenden Ast bin, auch in die tiefen der Template-Verarbeitung zu steigen. Ob das dann zweckmäßig erscheint, sei erstmal dahin gestellt - zumal es für mich auch eine Art Übung und Lehrzweck dient. Also seid da nicht emboßt, wenn der Quellcode wie Kraut und Rüben ausschaut - bin halt kein richtiger Programmierer - also angelernt... |
AW: was ist der Sinn von Templates/Generics ?
in Delphi kann man Methoden einer Klasse auch als EXTERNAL deklarieren
und dann als Einzelfunktionen z.B. in einer DLL (Delphi, C+++ oder sonstwas) exporieren, welche von der Delphi-Klasse dann genutzt werden. Ansonsten einfach einen Record, darin Pointer-Variablen auf Funktionen. (ähnlich dem TMemoryManager in der System-Unit, was auch zwischen Delphi und C++Builder genutzt werden kann) |
AW: was ist der Sinn von Templates/Generics ?
Zitat:
aber ich habe jetzt festgestellt, das ich ALLE ctor's wegschneiden kann, und durch ein Template ersetzen kann. Das spart in meiner momentanen Sicht der Weise, an binären Speicherplatz. Klar, man hat vielleicht einen kleinen Payload - aber der ist, so denke ich, schnell wieder reingeholt. |
AW: was ist der Sinn von Templates/Generics ?
Zitat:
Delphi-Quellcode:
irgendwie finde ich das Klasse, was man so machen kann - zumal man auch Code sparrt ...
constructor QChar<T>.Create(v: Array of T);
var i: Integer; begin for i := 0 to High(v) do foo := v[i]; end; |
AW: was ist der Sinn von Templates/Generics ?
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:36 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-2025 by Thomas Breitkreuz