Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

Anonymous

unregistriert

1

13.03.2005, 16:58

nur zwei Fragen..

Hi,

ich bin recht neu in C++ Programmierung und habe daher mal zwei, vieleicht dumme, Fragen :angel:

Frage 1:
ich habe eine abstrakte Basisklasse..
In dieser abstrakten Klasse habe ich einen Operator wie folgt überladen..

C-/C++-Quelltext

1
2
std::vector<LogEntry>   &operator= (const std::vector<LogEntry> &vLogEntrys)
{ m_vLogEntrys = vLogEntrys; return m_vLogEntrys;  }


wobei LogEntry eine einfache struct ist

wenn ich jetzt eine Klasse von der abstrakten Basis ableite, steht mir in der abgeleiteten Klasse der überladene Operator nicht mehr zur Verfügung.
Ich muss also den Operator für jede Klasse neu überladen, auch wenn er eigentlich immer das gleiche tut.
Ist das normal, oder mach ich was falsch? Gibt es eine Lösung um dieses "Problem" zu umgehen ?

Frage 2:
angenommen ich habe einen C-String vorliegen, der wie folgt aufgebaut ist:
"Datentext 1@Datentext Nummer 2@noch ein Teilstring@usw@"
wobei die einzelnen "Stringteile" jeweils durch ein Trennzeichen ( hier das @ ) voneinander getrennt sind.
Um diesen Text in seine einzelnen Bestandteile zu zerlegen, wollte ich das ganze mit sscanf() in die einzelnen Variablen einlesen.
sscanf() benutzt aber als Trennzeichen standartmässig das Leerzeichen bzw. Return.
Irgendwie glaube ich mich zu erinnern, das man das Trennzeichen für die scanf() und sscanf() Funktionen umdefinieren ( irgendwie ändern ) kann !?
Habt Ihr da ne Idee ? oder ist das schlichtweg nicht möglich ?
Habt Ihr evtl. ne andere/bessere Idee wie man das lösen kann ?

LG
EnLa

Anonymous

unregistriert

2

15.03.2005, 17:41

Hmm, mit so viel Antworten hatte ich dann doch nicht gerechnet :(

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

3

15.03.2005, 20:23

zu 2: strtok zu 1 ka^^

PD

unregistriert

4

15.03.2005, 23:51

zu 1: Irgendwie entgeht mir der sinn. Du überlädst den = operator zwischen 2 vectoren (global) obwohl bereits ein = operator für vectoren überladen ist (zumindest mein ich das und das würde auch aus deinem code hervorgehen). Das problem das ich sehe ist, das der operator wie gesagt global überladen ist (keiner Klasse angehörig, dafür fehlt das "klasse::") und er somit keine variable namens m_vLogEntrys kennen dürfte (solange diese nicht auch global ist). Irgendwo macht das ganze keinen wirklichen sinn so wie es da steht...

5

16.03.2005, 07:15

Wieso global? Er schreibt doch, dass er es in einer Klasse überladen hat.

PD

unregistriert

6

16.03.2005, 17:01

*bong* Ja, sorry, stand gestern etwas auf der Leitung ^^

Anonymous

unregistriert

7

19.03.2005, 16:54

Danke für eure Antworten :)

..war leider die letzten tage nicht im Lande.

@Nox: das mit dem 'strtok' hab ich so gemacht..war zwar ein bisschen aufwändiger, aber funktioniert ! 8)

nochmal zu 1: muss ja irgendwie ein generelles Verhalten sein, das sich in Basisklassen überladene Operatoren in den abgeleiteten Klassen nicht nutzen lassen (mal unabhängig von der Implementierung des Operators)
Hatte nur gehofft das einer das vieleicht bestätigen oder eben dementieren kann..
..however, überlad ich halt in jeder Ableitung den Operator neu..geht ja auch

LG
EnLa

EnLa

Frischling

  • Private Nachricht senden

8

19.03.2005, 17:06

Ooop's ..schon wieder vergessen einzuloggen :rolleyes:

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

9

19.03.2005, 18:42

wieso aufwendig? Erst eine komplette Zeile packen, und dann per scheife und strtok durchgehen....

EnLa

Frischling

  • Private Nachricht senden

10

20.03.2005, 13:15

Is klar, passt schon..
..war halt nur kleines bisschen aufwändiger als ein sscanf(pcText, "%s@%s@%s@", cVar1, cVar2, cVar3), wenn es denn so gegangen wäre ;)
Ausserdem hab ich das ganze nun in einer Funktion mit VarArg, von daher passt das strtok sowieso ganz gut

danke nochmal :wirbel:

Werbeanzeige