Design Problem



  • das ist jetzt mal der code wie ich ihn verwende:

    algo.h
    template< typename input, typename list, typename output>
    class Algo
    {
    public:
      /* Constructor */
      Algo();
    
      static void calc( input &in, list &lis, output &out)
      {
        ...
        Step2( input(), matrix(), output());
        ... 
        Step3( m, list(), output())
        ...
    }
    
    protected:
      /* Destructor */
      virtual ~Algo();
    
      virtual void Step2( input, list, output)=0;
    
      virtual void Step3( int &m, list, output)=0;
    
    private:
    
    };
    


  • algoInt.h:
    class AggloClusterMeasurement3D : public AlgoInt< int, int, int>
    {
    public:
      /* Constructor */
      AlgoInt();
      /* Destructor */
      virtual ~AlgoInt();
    
    private:
      virtual void Step2( input, list, output);
    
      virtual void Step3( int &m, list, output);
    };
    


  • algoint.cpp:
    
    void Step2( input, list, output)
    {
      ..
    }
    
    void Step3( int &m, list, output)
    {
      ..
    }
    

    sodele



  • warum funktioniert das jetzt nicht ??



  • Verrücktwerd .. schrieb:

    @Shade Of Mine:

    Ich möchte einen Algorithmus entwerfen der abhängig vom Typ, innerhalb ein teilweise anderes Verhalten aufweist. Weiterhin sollen eben andere Typen diesen Algorithmus verwenden können, dadurch, dass diese Verhalten implmenetiert wird.

    Steht der Typ schon zur Compilezeit oder erst zur Laufzeit fest?



  • Verrücktwerd .. schrieb:

    algoint.cpp:
    
    void Step2( input, list, output)
    {
      ..
    }
    
    void Step3( int &m, list, output)
    {
      ..
    }
    

    sodele

    Dabei handelt es sich z.B. um freie Funktionen.



  • @vielleicht auch das hier:

    Dabei handelt es sich z.B. um freie Funktionen.

    Was heisst das jetzt?

    @die frage:
    steht schon zur Compilezeit fest.



  • Verrücktwerd .. schrieb:

    ja das war ein copy & paste Fehler.

    Oh mein Gott wie ich Leute hasse die nichtmal fähig sind Copy & Paste zu machen, sondern ihren Code abtippen, und dann Fehler reinbauen. ARGH!
    Wie soll das bitte ein Copy & Paste Fehler gewesen sein? Hat dein Clipboard ein Loch, durch das aus der Buchstabenzuleitung zur Tastatur dann ein Semikolon in den Text gefallen ist?



  • An dem zuletzt gezeigtem Code stimmt auch fast gar nichts mehr.
    eher dann so.
    Ich habe hier das gefühl, dass der OP ein wenig jenseits seiner Kenntnisse arbeitet. Vielleicht wäre etwas Leichteres angebracht. 🙂

    // algo.h
    template< typename input, typename list, typename output>
    class Algo
    {
    public:
      /* Constructor */
      Algo() {}
    
    protected:
      /* Destructor */
      virtual ~Algo() {}
    
      virtual void Step2( input, list, output)=0;
    
      virtual void Step3( int &m, list, output)=0;
    
    private:
    
    };
    
    //algoint.h
    class AggloClusterMeasurement3D : public Algo< int, int, int>
    {
    public:
      /* Constructor */
      AggloClusterMeasurement3D() {}
      /* Destructor */
      virtual ~AggloClusterMeasurement3D() {}
    
    private:
      virtual void Step2( int, int, int);
    
      virtual void Step3( int &m, int, int);
    };
    
    // algoint.cpp
    void AggloClusterMeasurement3D::Step2( int, int, int)
    {
      std::cout << "Step2 - int" << std::endl;
    }
    
    void AggloClusterMeasurement3D::Step3( int &m, int, int)
    {
      std::cout << "Step3 - int" << std::endl;
    }
    


  • ja was soll ich sagen, eigentlich hat es gleich zwei Löcher



  • Ich habe hier das gefühl, dass der OP ein wenig jenseits seiner Kenntnisse arbeitet. Vielleicht wäre etwas Leichteres angebracht.

    ... naja irgentwie muss mann es ja lernen.


Anmelden zum Antworten