Vererbung mit Templates



  • hallo,

    ich hab eine klasse die mit bitvektoren arbeitet (T bits). Ich würde gerne davon eine Klasse ableiten in der ich ein paar operatoren überladen will.

    Die frage ist wie ich eine klasse mit einem Template (T ist von typ integer)vererben kann bzw. dann operatoren überladen kann.

    wäre euch sehr dankbar. 🙄



  • wenn ich dich richtig verstanden hab, dann sollte das so ablaufen(bar ist deine Klasse):

    template<std::size_t T>
    class Foo:public bar<T>{};
    

    und überladen funktioniert dann genauso wie sonst auch 🙂



  • danke erstmals,

    ich habe es eigentlich genauso gemacht...funktionniert aber leider nicht

    hier mein code:

    [cpp][code]

    template <int T>

    class errint : public sc_int<T>
    {
    public:

    errint<T>(int val)
    {
    sc_int<T>::sc_int<T>(val);
    }

    errint<T> operator * (errint<T> rh)
    {
    return (&(sc_int<T>)this * (sc_int<T>)rh + 5);
    }
    };

    hast du eine idee was da falsch sein könnte?



  • template <int T>
    class errint : public sc_int<T>
    {
      public:
        errint(int val):sc_int<T>(val){}
    
        //wenn du sowieso den op* von der elternklass verwendest, brauchst du ihn auch nicht ueberschreiben
        errint<T> operator * (errint<T> rh){
           return (&(sc_int<T>)this * (sc_int<T>)rh + 5); 
        }
    };
    


  • ja..der operator * will ich ja überschreiben weil er nicht nur das * (mal) machen soll..

    es funktionniert aber trotzdem nicht 😞


Anmelden zum Antworten