Hypercell ein ] Hypercell aus ] Zeige Navigation ] Verstecke Navigation ]
c++.de  
   

Die mobilen Seiten von c++.de:
http://m.c-plusplus.de
Infos hier [BETA]

  
c++.de :: C++ (auch C++0x und C++11) ::  Zeiger auf gebundene Funktion als Funktionsparameter  
Gehen Sie zu Seite Zurück  1, 2
  Zeige alle Beiträge auf einer Seite
Auf Beitrag antworten
Autor Nachricht
krümelkacker
Mitglied

Benutzerprofil
Anmeldungsdatum: 10.08.2010
Beiträge: 2226
Beitrag 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.
c++.de :: C++ (auch C++0x und C++11) ::  Zeiger auf gebundene Funktion als Funktionsparameter  
Gehen Sie zu Seite Zurück  1, 2
Auf Beitrag antworten

Zeige alle Beiträge auf einer Seite




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.

Powered by phpBB © 2001, 2002 phpBB Group :: FI Theme

c++.de ist Teilnehmer des Partnerprogramms von Amazon Europe S.à.r.l. und Partner des Werbeprogramms, das zur Bereitstellung eines Mediums für Websites konzipiert wurde, mittels dessen durch die Platzierung von Werbeanzeigen und Links zu amazon.de Werbekostenerstattung verdient werden kann.

Die Vervielfältigung der auf den Seiten www.c-plusplus.de, www.c-plusplus.info und www.c-plusplus.net enthaltenen Informationen ohne eine schriftliche Genehmigung des Seitenbetreibers ist untersagt (vgl. §4 Urheberrechtsgesetz). Die Nutzung und Änderung der vorgestellten Strukturen und Verfahren in privaten und kommerziellen Softwareanwendungen ist ausdrücklich erlaubt, soweit keine Rechte Dritter verletzt werden. Der Seitenbetreiber übernimmt keine Gewähr für die Funktion einzelner Beiträge oder Programmfragmente, insbesondere übernimmt er keine Haftung für eventuelle aus dem Gebrauch entstehenden Folgeschäden.