| Autor |
Nachricht |
krümelkacker
Mitglied
Benutzerprofil
Anmeldungsdatum: 10.08.2010
Beiträge: 2226
|
krümelkacker Mitglied
14:39:06 13.02.2011 Titel: |
|
Zitieren |
Du müsstest Dich intensiver mit folgenden Dingen beschäftigen:
1. Konzept der getrennten Übersetzung
2. Was sind Templates?
3. Was ist das "Inclusion Model" bzgl Templates?
4. ODR (one definition rule)
5. Was liefert ein Lambda-Ausdruck?
Du bist in eine "Falle" gelaufen, in die viele reinlaufen, wenn sie versuchen Templates zu benutzen, ohne die Konzepte dahinter zu verstehen.
Entweder Du packst die Implementierung der RungeKutta-Funktion in einen Header
| C++: | 1 2 3 4 5 6 7 8 9 10 | #ifndef RK4_HPP_INC
#define RK4_HPP_INC
template<class Func>
void rk4(???,Func f)
{
???
}
#endif//RK4_HPP_INC | |
oder Du machst aus rk4 eine normale Funktion, deklarierst sie nur im Header und definierst sie in einer cpp-Datei. Du kannst hier ausnutzen, dass passende Funktor-Typen in std::function<???> konvertierbar sind.
| C++: | 1 2 3 4 5 6 7 8 | #ifndef RK4_HPP_INC
#define RK4_HPP_INC
#include <functional>
void rk4(???,std::function<void(int,double,double*)> f);
#endif//RK4_HPP_INC | |
| C++: | #include "rk4.hpp"
void rk4(???,std::function<void(int,double,double*)> f)
{
...
} | |
Letzteres wird aber etwas langsamer aufgrund des zusätzlichen "Level of indirection". Aufrufen kannst Du beide Funktionen genau gleich.
Warum wieso weshalb musst Du selbst nachlesen. Schnapp Dir ein schlaues C++ Buch und lerne. |
|
|
|
 |
|
Nächstes Thema anzeigen
Vorheriges Thema anzeigen
Sie können Beiträge in dieses Forum schreiben. Sie können auf Beiträge in diesem Forum antworten. Sie können Ihre Beiträge in diesem Forum nicht bearbeiten. Sie können Ihre Beiträge in diesem Forum nicht löschen. Sie können an Umfragen in diesem Forum nicht mitmachen.
|
|
|
|
|