Variadic Templates; Funktionsauruf



  • Hallo

    ich habe folgendes Problem.

    Ich habe eine Klasse Range

    class Range{}
    

    mit Unterklassen

    class IntegerRange : public Range
    {
      public:
      int _start, _end;
      IntegerRange( int start, int end) { _start=start; _end=end;}
    }
    
    class FloatRange : public Range
    {
      public:
      float start, end;
      FloatRange( float start, float end) { _start=start; _end=end;}
    }
    

    Ich möchte nun verschiedene Ranges in einen std::vector<Range> einreihen:

    std::vector<Range> rangeVector;
    
    rangeVector.insert( new IntegerRange( 0, 10 ) );
    rangeVector.insert( new IntegerRange( 12, 22 ) );
    rangeVector.insert( new FloatRange( 1.33f, 3.01f ) );
    rangeVector.insert( new IntegerRange( 0, 10 ) );
    // ...
    

    Anschließend möchte ich eine Funktion folgender Form definieren

    template<typename...Ts>
    double foo( std::function<double(Ts...)> func, std::vector<Range> rangeVector )
    {
       return // hier soll func aufgerufen werden mit den Start- und Endwerten aller umfassten Kindklassen, also: func(0,10, 12,22, 1.33f,3.01f, 0,10)
    }
    

    Ich habe leider keine Ahnung, wie ich den Aufruf von func mit den gewünschten Argumenten implementieren kann. Kann mir einer von euch helfen?

    Danke!



  • Falsches Unterforum... hier ist C++/CLI, eine .NET Sprache.


Anmelden zum Antworten