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
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Zitat
srand wird per C++14 als deprecated markiert sein, also tust du gut jetzt schon auf den <random> header umzusteigen.
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 |
#pragma once #include <random> template <typename T> class RNG { public: RNG(T type) {}; void setSeed(unsigned long seed) { rng.seed(seed) }; T nextRandom(T& min, T& max); float nextRandom(const float min, const float max); private: std::default_random_engine rng; T min; T max; }; |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 |
#include "RNG.hpp" template <typename T> T RNG::nextRandom(const T& min, const T& max) { std::uniform_int_distribution<T> dist(min, max); return dist(rng); } template <> float RNG::nextRandom(const float min, const float max) { std::uniform_real_distribution<float> dist(min, max); return dist(rng); } |
Zitat
Error: Die Argumentliste für "Klassenvorlage "RNG"" fehlt
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
#pragma once #include <random> template <typename T> class RNG { public: RNG(T type) {}; void setSeed(unsigned long seed) { rng.seed(seed) }; T nextRandom(T& min, T& max); float nextRandom(const float min, const float max); private: std::default_random_engine rng; T min; T max; }; #include "RNG.inl" |
C-/C++-Quelltext |
|
1 2 3 4 5 |
template <typename T> T RNG::nextRandom(const T& min, const T& max) { std::uniform_int_distribution<T> dist(min, max); return dist(rng); } |
C-/C++-Quelltext |
|
1 2 3 4 5 6 7 |
#include "RNG.hpp" template <> float RNG::nextRandom(const float min, const float max) { std::uniform_real_distribution<float> dist(min, max); return dist(rng); } |
Zitat
1>------ Erstellen gestartet: Projekt: Lunar Defense, Konfiguration: Debug Win32 ------
1> RNG.cpp
1>c:\users\sebastian\documents\visual studio 2013\projects\lunar defense\lunar defense\rng.inl(2): error C2955: 'RNG' : Für die Verwendung von Klasse template ist eine template-Argumentliste erforderlich
1> c:\users\sebastian\documents\visual studio 2013\projects\lunar defense\lunar defense\rng.hpp(5): Siehe Deklaration von 'RNG'
1>c:\users\sebastian\documents\visual studio 2013\projects\lunar defense\lunar defense\rng.inl(5): error C2244: 'RNG<T>::nextRandom': Keine Übereinstimmung für Funktionsdefinition mit vorhandener Deklaration gefunden
1> Definition
1> 'T RNG::nextRandom(const T &,const T &)'
1> Vorhandene Deklarationen
1> 'float RNG<T>::nextRandom(const float,const float)'
1> 'T RNG<T>::nextRandom(T &,T &)'
1>c:\users\sebastian\documents\visual studio 2013\projects\lunar defense\lunar defense\rng.cpp(4): error C2955: 'RNG' : Für die Verwendung von Klasse template ist eine template-Argumentliste erforderlich
1> c:\users\sebastian\documents\visual studio 2013\projects\lunar defense\lunar defense\rng.hpp(5): Siehe Deklaration von 'RNG'
1>c:\users\sebastian\documents\visual studio 2013\projects\lunar defense\lunar defense\rng.cpp(7): error C2910: 'RNG<T>::nextRandom': Kann nicht explizit spezialisiert werden
========== Erstellen: 0 erfolgreich, 1 fehlerhaft, 0 aktuell, 0 übersprungen ==========
Zitat
Hier die Dateien, die ich am Anfang hatte: [...]
Zitat
Im Chat wurde mir dann mitgeteilt, dass das Aufteilen von templates auf hpp und cpp nicht so einfach wäre und ich das ganze auf 3 Dateien aufteilen sollte.
Alter Hase
Beruf: Softwareentwickler (aktuell Web/Node); Freiberuflicher Google Proxy
Werbeanzeige