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

Nico

Frischling

  • »Nico« ist der Autor dieses Themas

Beiträge: 82

Wohnort: Nürnberg

  • Private Nachricht senden

11

29.11.2007, 15:01

Das was ich hier die ganze Zeit schreibe:
Der Wert ist vorm speichern in der Liste ok.
Der Wert ist nach dem Verändern und vor dem Speichern ok.
Der Wert ist nach dem Speichern in der liste ok.
Der Wert ist nach dem Verändern des Gespeicherten per set() nicht mehr ok. Allerdings wird beim Einzelsprung alles richtig durchgeführt und die Werte stimmen. Nur nach einem anschliessenden get() passen die Variablen nicht mehr... bzw nur die, die man auch geändert hat. ^^
Die übergaben passen alle.. also die werte.
lg

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

12

29.11.2007, 15:07

Zitat von »"Nico"«


Ich hoffe du kannst das jetzt nachvollziehen...


Ich weiß was du meinst. Und wenn du meinst es sei ein großer Vorteil... Ich sehe da prinzipiell mehr Nachteile als Vorteile. Wie gesagt, siehe auch den Link im letzten Post.

Zitat von »"Nico"«


Als ehemaliger C-Anwender bin ich noch nicht so mit Referenzen vertraut, das gebe ich zu. Aber afaik kann ich eine Referenz nicht auf NULL testen.
Ich verwende in der Klasse nur 3 Zeiger und das ist für den Listener und die Attribute.
Hier muss ich imho einen Zeiger nehmen, weil die Listener-Klasse eine abstrakte Klasse ist, die nicht instanziert werden kann. Wie soll ich das also anstellen?
Bei den beiden Attributen: Ich kann zwar ein leeres Attribut nehmen, ist aber umständlicher und unzuverlässiger als ein Zeiger.
Klär mich auf, was das angeht.... oder gibts sowas wie NULL-Referenzen? Wenn ja, wie? Ich weiss nix davon^^.


Gibt es nicht, was ein weitere Vorteil von Referenzen ist! Umgehen könntet du es z.B. über ein Dummy Objekt.

Zitat von »"Nico"«


Sinnlos.... der Compiler macht nix anderes. Ob das jetzt dasteht oder nicht, is doch vollkommen egal.


Korrekt, und deshalb ist es ja sinnlos einen leeren Konstruktor zu erstellen.

Zitat von »"Nico"«


Ja. Ich weiss was drinsteht und dass er das tut, was ich möchte.


Es macht dann Sinn wenn nur Teile des Objekts kopiert werden sollen. Und wann will man das schon?!

Zitat von »"Nico"«


Der Code selbst (Funktionsrumpf) wird nicht von DoxyS in die Doku exportiert. Die Definition allerdings schon... ich will halt das "inline" drinstehen haben *shrug* Ist doch vollkommen wurscht.


Ok, dann arbeitet DoxyS eben suboptimal!

Zitat von »"Nico"«


Zum Thema:
Ja, es betrifft die Kopie in der Liste. Die soll verändert werden, tut es aber fehlerhaft.


In deinem Code seh ich egtl keinen Fehler. Muss wohl eine andere Ursache haben. Vielleicht wird der Speicher irgendwo überschrieben?!
@D13_Dreinig

Nico

Frischling

  • »Nico« ist der Autor dieses Themas

Beiträge: 82

Wohnort: Nürnberg

  • Private Nachricht senden

13

29.11.2007, 15:39

Zitat


Ich weiß was du meinst. Und wenn du meinst es sei ein großer Vorteil... Ich sehe da prinzipiell mehr Nachteile als Vorteile. Wie gesagt, siehe auch den Link im letzten Post.

Naja, jeder hat andere Vorlieben und seinen eigenen Stil. Syntaktisch und auch logisch (Logik des Codes) ist es kein Fehler. Von daher ist es weder Unsinn noch nicht zulässig. Es ist einfach eine Hilfe für mich selbst und von daher sollte man es bitte akzeptieren.

Zitat

Gibt es nicht, was ein weitere Vorteil von Referenzen ist! Umgehen könntet du es z.B. über ein Dummy Objekt.

Hmm, so ein DummyObjekt frisst aber schon wieder Speicher, auch wenns nur ein paar KB sind. Da sind mir Zeiger ehrlich gesagt lieber!

Zitat


Es macht dann Sinn wenn nur Teile des Objekts kopiert werden sollen. Und wann will man das schon?!

Nicht nur! Hast du ein char*-Array (C-Style String) als Beispiel drin, kann das ganz schnell zu Problemen führen. Denn hier würde nur der Zeiger kopiert werden, nicht der Inhalt. Und ich implementiere den operator=() gerne auch mal privat... NoCopy und so ;).

Zitat


In deinem Code seh ich egtl keinen Fehler. Muss wohl eine andere Ursache haben. Vielleicht wird der Speicher irgendwo überschrieben?!

Ne wirds nicht -.-

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

14

29.11.2007, 15:45

Zitat von »"Nico"«

Nicht nur! Hast du ein char*-Array (C-Style String) als Beispiel drin, kann das ganz schnell zu Problemen führen. Denn hier würde nur der Zeiger kopiert werden, nicht der Inhalt. Und ich implementiere den operator=() gerne auch mal privat... NoCopy und so ;).


Für Fall 1 sind copy c'tor und assignment operator notwendig, von diesem Fall hab ich nicht gesprochen.
Für Fall 2 macht es Sinn wegen des Designs.
In allen anderen Fällen (diese meinte ich nämlich) macht es eben keinen Sinn copy c'tor und assignment operator zu implementieren! Und natürlich kannst du wieder kommen und sagen: jeder hat seinen stil etcpp... Aber sinn macht es trotzdem nicht!

Zitat von »"Nico"«


Ne wirds nicht -.-


Woher weißt du das so genau? Und wieso ist der Wert dann falsch? :roll:
@D13_Dreinig

Nox

Supermoderator

Beiträge: 5 272

Beruf: Student

  • Private Nachricht senden

15

29.11.2007, 18:07

Also...irgendwo ist ein Fehler, also kann nicht alles richtig sein!

C-/C++-Quelltext

1
2
3
4
void rpgLib::rpgCharacterAttribute::setValue( const uint value )
{
    m_value = value; //hier rein

}


Da mal einen Haltepunkt rein und dann alle Werte überprüfen (vorallem value). Dann einen Schritt weitergehen und die Werte nochmal überprüfen. Wenn dann immernoch alles i.O. dann noch einen Schritt weiter und die Werte aus der Charakterliste auslesen. Sprich langsam an den Fehler "ranrobben".
PRO Lernkurs "Wie benutze ich eine Doku richtig"!
CONTRA lasst mal die anderen machen!
networklibbenc - Netzwerklibs im Vergleich | syncsys - Netzwerk lib (MMO-ready) | Schleichfahrt Remake | Firegalaxy | Sammelsurium rund um FPGA&Co.

Nico

Frischling

  • »Nico« ist der Autor dieses Themas

Beiträge: 82

Wohnort: Nürnberg

  • Private Nachricht senden

16

29.11.2007, 18:55

So, jetzt funzts... und der Fehler lang gaaaanz woanders.
Hab das Projekt mit "clean" gesäubert. Danach mal in den Ordner gekuckt. Die .PCH (Precompiled Header) wurde nicht gelöscht von der IDE. PCH gelöscht, neu gebaut -> funzt.
Ich sag ja: Notepad + Kommandozeile is das einzigste wo man sich drauf verlassen kann :D.
lg

grek40

Alter Hase

Beiträge: 1 491

Wohnort: Dresden

  • Private Nachricht senden

17

29.11.2007, 19:47

ähm ja... wenn du mal nicht nur vorkompilierte Header verwenden sondern auch erstellen würdest sollte das eigentlich alles funzen ^^

Nico

Frischling

  • »Nico« ist der Autor dieses Themas

Beiträge: 82

Wohnort: Nürnberg

  • Private Nachricht senden

18

29.11.2007, 20:00

https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=8652

Ööhhh ich glaub ich kann das :D
lg

David_pb

Community-Fossil

Beiträge: 3 886

Beruf: 3D Graphics Programmer

  • Private Nachricht senden

19

29.11.2007, 21:19

Zitat von »"Nico"«

https://www.spieleprogrammierer.de/phpBB2/viewtopic.php?t=8652

Ööhhh ich glaub ich kann das :D
lg


Eine kurze Beschreibung (welche man überall abtippen kann) sagt nicht das man die Thematik auch wirklich versteht... :idea:
@D13_Dreinig

Werbeanzeige