Gå til innhold

Definisjonen på policy classes?


Anbefalte innlegg

Videoannonse
Annonse

Kan tenke deg poliformi, du slepper bare litt billigere unna; ingen virtuelle funksjoner.

 

#include <iostream>

using namespace std;


// A policy, or a way to do something.
class SomeWay {
public:
       void doIt()
       {
               cout << "SomeWay::doIt()" << endl;
       } // doIt
}; // SomeWay


// Another policy, or another way to do the same thing.
class AnotherWay {
public:
       void doIt()
       {
               cout << "AnotherWay::doIt()" << endl;
       } // doIt
}; // AnotherWay


template<class HOW>
class DoStuff : public HOW {
}; // DoStuff


template<typename C>
void action(C& c)
{
       c.doIt();
} // action



int main()
{
       DoStuff<SomeWay> a;
       action(a);

       DoStuff<AnotherWay> b;
       action(b);

       return(0);
} // main

Lenke til kommentar

Tror jeg skjønner litt... Er det på en måte slik at templates og arv "binder" alt sammen? Kansje litt dårlig formulert, men jeg tror jeg skjønner. Tusen takk for hjelpa! :D

 

Edit:

Kan tenke deg poliformi, du slepper bare litt billigere unna; ingen virtuelle funksjoner.
Slepper biligere unna? Hva er det som er "galt" med poliformi?

Skjønner det bedre og bedre etterhvert som jeg kikker mer på koden. :w00t:

Endret av zirener
Lenke til kommentar

hvis du skulle bruke polyformi for å få den samme effekten hadde du istedetfor et template-argument tatt en basepointer og hatt en virtuell funksjon som het doit() som man implementerer i de arvede klassene. hvilken funksjon som blir kalt skjer i runtime, og er derfor tregere enn template eksempelet som skjer i compile-time

Endret av iobas
Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...