Datentyp übergeben
-
Ich habe einen Tiefpass programmiert, der bekommt als Parameter einen Vektor und einen Integer, über wieviel Werte er mitteln soll. Jetzt möchte aber auch gerne sagen, welchen Wert er mitteln soll, aber ich finde keine Lösung außer switch/case. Das erscheint mir sehr aufwendig und umständlich.
std::vector<CDataRow> CMyAppDlg::Smoothing(std::vector<CDataRow> drVec, size_t iLOS) { std::vector<CDataRow> SmoothedVec; // iLOS = Level of Smoothing ... return SmoothedVec; }
struct CDataRow { float m_fFrequency; std::complex<float> m_cfS11; std::complex<float> m_cfS12; std::complex<float> m_cfS21; std::complex<float> m_cfS22; };
Gibt es eine elegantere Lösung, der Funktion mitzuteilen, das ich von S12 alle Realteile ( m_cfS12.real() ) mitteln will?
-
Die Funktion soll sowohl für den realteil, als auch den Betrag / IMaginärteil arbeiten?
Ließe sich mit einem geschickten Template machen...
-
Ja genau. Sollte irgendwie funktionieren wie
std::vector<CDataRow> CMyAppDlg::Smoothing(std::vector<CDataRow> drVec, size_t iLOS, Type myType) { ... if (myType == S12.real()) // mittle alle Real-Teile von S12 ... }
hab aber keine Ahnung, ob man so etwas überhaupt realisieren kann.