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

11

06.11.2011, 16:54

Direkt in der tbMatrix.h

Die Methoden aus der Klasse tbVector3.h werden alle nicht erkannt.
Ich lade mir mal das Update erneut und probiers nochmal.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

12

06.11.2011, 17:04

Du hast meine Frage nicht verstanden.
Welches Projekt hast du kompiliert, so dass du diesen Compiler-Fehler überhaupt erhalten hast?
Und mal ganz ehrlich: hast du überhaupt schon irgendwelche Erfahrung mit C++? Wenn nicht, dann ist das Buch nicht für dich geeignet und wird dir vor allem Frustration bringen.

13

06.11.2011, 18:02

Ich habs noch garnicht kompiliert. Ich gucke mir begleitend zum Buch die entsprechenden Files an.
Darunter eben auch die tbMatrix (weil ich gerade bei den Matrizen bin!) aber Visual Studios sagt
(dank eines tollen features, dass kritische bzw. fehlerhafte Stellen rot unterringelt und bei Mouse-Over
nen Info-Text ausspucht) von vorneherein schon, dass diese Methoden nicht definiert seien.
Mit Visual Studio 2010 arbeite ich erst seid ich mit diesem Buch arbeite.

Und zu dem C++ an sich, habe ich zuvor das in deinem Buch empohlene "C++ für Spieleprogrammierer"
bearbeitet. Natürlich sitzen noch nicht alle C++ Kenntnisse!

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

14

06.11.2011, 18:04

Na dann probier es mal zu kompilieren. Visual Studio kann sich auch irren, was Fehler-Hervorhebung direkt im Code-Fenster angeht.

15

06.11.2011, 18:51

Ok, ich habe es mit einer kleinen Test-Klasse kompiliert und es hat funktioniert, visual studio hat das tatsächlich falsch angezeigt -.-
Ärgerlich weil das mich jetzt Stunden der Suche gekostet hat....

Ok aber mal ne ganz andere Frage, du hast die Funktionen, bei dem was ich bisher gesehen habe, als inline Funktion deklariert.
Macht das der Compiler heutzutage nicht automatisch, dass er, wenn es sinnvoll ist, Methoden inline abarbeitet (an Stelle des
Funktionsaufrufs den Funktionsinhalt kopieren). Wieso expliziet als Inline Funktion?

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

16

07.11.2011, 10:15

Das Schlüsselwörtchen inline erlaubt dir nur, Funktionen im Header definieren zu können. Entfern das inline mal und include den Header dann in mehreren .cpps im selben Projekt, dürfte dir n Linkerfehler produzieren ;)
Die inline-Optimierung selbst macht der Compiler wie er mag.
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

17

07.11.2011, 10:41

Nein, jokester. Es gibt keine Fehler ohne "inline".
Stimmt, ich könnte es genauso gut weglassen.

jokester

Treue Seele

Beiträge: 125

Wohnort: Mainz

  • Private Nachricht senden

18

07.11.2011, 11:19

Wenn es unter VS keine Fehler gibt, verhält er sich nicht standardkonform. Wenn eine nicht-inline Funktion in mehreren Übersetzungseinheiten definiert ist, wird die ODR verletzt.

Edit: Wenns um Memberfunktionen geht, sind die implizit inline, wenn sie innerhalb der Klasse definiert werden, da ist das inline dann tatsächlich überflüssig. Aber für die Funktion tbMatrixIdentity() gilt das bspw. nicht.
"There is a theory which states that if ever anyone discovers exactly what the Universe is for and why it is here, it will instantly disappear and be replaced by something even more bizarre and inexplicable. There is another theory which states that this has already happened" -- Douglas Adams.

19

07.11.2011, 11:46

Du meinst das ja?

http://en.wikipedia.org/wiki/One_Definition_Rule

Muss ich mal testen ;)

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

20

07.11.2011, 11:57

Achso, ich hatte doch glatt vergessen dass das globale Funktionen sind. Dann wird inline benötigt, ja.

Werbeanzeige