jaaaa - das wäre tatsächlich ein Vorteil!
@moppi: ich meinte mit Teilzeichenketten die tokens, und das sind ja Pointer auf char![]()
jaaaa - das wäre tatsächlich ein Vorteil!
@moppi: ich meinte mit Teilzeichenketten die tokens, und das sind ja Pointer auf char![]()
Das hoffe ich! Nur Tokens ist mir zu english. Deutsch kennt Worte, die einen Sachverhalt besser/präziser beschreiben können. Ich bleibe deshalb eigentlich lieber bei Deutsch.ich meinte mit Teilzeichenketten die tokens
![]()
stimmt
aber wegen der tokens heißt die Funktion ja nun auch strtok
Teilzeichenketten konnte man offenbar auch missverstehen als Rest-Strings
Aber gut, das wir jetzt wissen was wir meinen und meinen was wir wissen![]()
Ich Suche noch einen Link zu: Wie erweitere ich zur Laufzeit ein Objekt/Klasse um Eigenschaften?
In meinem Buch kommt OOP leider nicht vor.
Alles sonst habe ich so weit gefunden, was man im Quelltext (Klasse) anlegt, einbindet.
Suche noch eine Beschreibung, wie man eben, wenn das Programm läuft, einer Klasse oder Struktur eine Eigenschaft (also z.B. einen Wert oder Zeichenkette mit Bezeichner) hinzufügt.
Ich bezweifle, das sowas wie: meinObjekt.Name2 = "Müller"; einfach so funktionieren wird, wenn Name2 nicht schon in meinObjekt existiert hat.
Aber vielleicht funktionbiert es ja auch mit: meinObjekt.Name2 = new String("Müller"); ???
MfG
erweitern von Klassen durch weitere Variablen oder Methoden zur Laufzeit ist meines Wissens nicht möglich.Ich Suche noch einen Link zu: Wie erweitere ich zur Laufzeit ein Objekt/Klasse um Eigenschaften?
In meinem Buch kommt OOP leider nicht vor.
Alles sonst habe ich so weit gefunden, was man im Quelltext (Klasse) anlegt, einbindet.
Suche noch eine Beschreibung, wie man eben, wenn das Programm läuft, einer Klasse oder Struktur eine Eigenschaft (also z.B. einen Wert oder Zeichenkette mit Bezeichner) hinzufügt.
Ich bezweifle, das sowas wie: meinObjekt.Name2 = "Müller"; einfach so funktionieren wird, wenn Name2 nicht schon in meinObjekt existiert hat.
Aber vielleicht funktionbiert es ja auch mit: meinObjekt.Name2 = new String("Müller"); ???
Diese müssen schon bei der Deklaration fest stehen, genau wie man keine zusätzlichen Zeilen zur Laufzeit in eine Funktion schreiben kann, keine array-Größen erhöhen/verlängern kann und keine zusätzlichen undeklarierten Variablen nachträglich zur Laufzeit einfügen kann, weder global noch lokal in Funktionen oder Strukturen.
Stelle dir ein Objekt vereinfacht als C-Struktur vor, nur sind jetzt zusätzlich zu Variablen jetzt auch noch Funktionen enthalten.
meinObjekt.Name2 = "Müller";
geht also nur, wenn ein Objekt
class foo{}
bereits per Deklaration eine Variable enthält
public:
String Name2 ;
dann geht nach Instanziierung per
foo meinObjekt;
meinObjekt.Name2 = "Müller";
PS:
es ist analog zu Strukturen:
auch hier kann man zur Laufzeit keiner Variablen Name3 etwas zuweisen.Code:typedef struct { String Name1, Name2; } foo; foo meineStruct; meineStruct.Name2= "Müller";
Geändert von HaWe (28.10.2019 um 21:02 Uhr)
Ich nenne mal als Beispiel JavaScript. Hier ein Link dazu: https://developer.mozilla.org/de/doc...ekten_arbeiten
Das was dort beim Erstellen von Objekten aufgezeigt ist, geschieht zur Laufzeit. Es können auch stets neue Eigenschaften, die im Quellscript noch nicht enthalten sind, später hinzugefügt werden. So weit ich etwa weiß, geht das auch mit JSON. Dass man Objekte importieren kann. Objekte, die während der Erstellung des Quelltextes gar nicht bekannt sind, werden zur Laufzeit erstellt.
MfG
Ich habe alles ausprobiert, was mir so einfiel und gesucht und gesucht. Ich habe nichts Brauchbares gefunden. Es scheitert immer daran, dass man im C-Quelltext für Arduino nicht eine Eigenschaft (Variable) einem Objekt nachträglich hinzufügen kann, die nicht irgendwie definiert ist. Ich glaube der Lösungsansatz in diese Richtung liegt bei verketteten Liste .. da war mal was ...
Nach kurzem Anschauen ist es das, was man dafür benötigt, um dynamisch (übergeordnete) Objekte zur Laufzeit abzubilden / zu erstellen / zu verändern. Ich nenne die mal übergeordnet, weil sich so Strukturen (Objekte wenn man so will) aus Klassen (die im Quelltext definiert wurden) zusammensetzen und verwalten lassen.
Geändert von Moppi (29.10.2019 um 05:01 Uhr)
JavaScript wird interpretiert. Da baut der Interpreter zur Laufzeit Strukturen und Objekte. C bzw C++ wird compiliert. Da baut der Compiler die Strukturen und der Linker plaziert sie im Speicher. Daher kann zur Laufzeit nichts geändert werden. Da sind auch aus Variablennamen längst Speicheradressen geworden.
Das gilt immer für C, hat mit Arduino nichts zutun.
MfG Klebwax
Strom fließt auch durch krumme Drähte !
Lesezeichen