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

Pixma

Frischling

  • »Pixma« ist der Autor dieses Themas

Beiträge: 35

Wohnort: Mainz

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

1

19.01.2013, 19:48

Überladene Operatoren in Verbindung mit einer List

Hallo,


zurzeit versuche ich einen Memory Manager zu programmieren,
dabei orientiere ich mich ein wenig an der TRIBASE Engine.

Ich möchte den bereits reservierten Speicherbereich löschen, mittels des Befehls.
„list->remove(Listeneintrag);“.


Dazu habe ich bei der Struktur die Operatoren
überladen.


Jedoch ist der Parameter des überladenen Operator leer. Ich
weiß nicht mehr weiter, muss man da was beachten?


Das sieht so aus:




C-/C++-Quelltext

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
struct MemoryListEntry

{
void*  pMemory;
void*  pUserMemory;
int         iSize;
bool operator == (const MemoryListEntry &lhs) const;

};

 

Result MemoryManager::DeAllocate(void* pData)
{
…
MemoryList->remove(*pMemoryListEntry);
…
}

 

bool MemoryListEntry::operator == (const MemoryListEntry& lhs) const -> lhs = leer
{
 }

 

 



Gruß Dennis

stef

Treue Seele

Beiträge: 246

Wohnort: Kassel

Beruf: Softwareentwickler

  • Private Nachricht senden

2

19.01.2013, 23:36

Ich glaube du musst dein Problem noch etwas genauer beschreiben.
"In C++ it's harder to shoot yourself in the foot, but when you do, you blow off your whole leg." — Bjarne Stroustrup.

3

20.01.2013, 11:02

Das macht irgendwie keinen Sinn. Du musst nicht irgendwelche Operatoren in Klassen überladen, die du in eine Liste stecken willst (es sei denn, du benutzt eine sehr sehr komische Liste).
Objekte aus Listen löschen geht so:
http://en.cppreference.com/w/cpp/container/list/erase
An den benötigten Iterator kommst du zum Beispiel per find:
http://en.cppreference.com/w/cpp/algorithm/find
Lieber dumm fragen, als dumm bleiben!

Pixma

Frischling

  • »Pixma« ist der Autor dieses Themas

Beiträge: 35

Wohnort: Mainz

Beruf: Fachinformatiker für Anwendungsentwicklung

  • Private Nachricht senden

4

20.01.2013, 13:16

Hallo zusammen,

also vielen Dank, für eure Hilfe:)
Ich habe das Problem nun mittels des Befehls erase gelöst, nun werde ich das ganze noch ein wenig optimieren.
Vielen Dank :)

5

20.01.2013, 16:11

Denk aber daran, dass find lineare Laufzeit hat (dauert länger, je größer die Liste ist). Möglicherweise möchtest du einen anderen Container benutzen, um dein Programm zu beschleunigen.
Lieber dumm fragen, als dumm bleiben!

Werbeanzeige