Avatar billede krismort Nybegynder
17. juli 2005 - 19:28 Der er 6 kommentarer

virtuel member kaldt fra ctor.

Hej,
Hvad kan man gøre for at få flg. til at fungerer ?

class DispatcherInterface {
public:
  DispatcherInterface () {
    setupEvents();
  }
  virtual void setupEvents() = 0;
};

class MinEventAfsender : public DispatcherInterface
{
  void setupEvents() {
    cout << "her tilføjes events" << endl;
  }
};

Jeg ville gerne tvinge MinEventAfsender til at implementerer metoden setupEvents som skal køres "automatisk" når objektetet bliver instanceret. Kan dette ikke lade sig gøre på en eller anden måde så jeg stadig kan indkapsle setupEvents i macro kommandoer?

- Kristian
Avatar billede arne_v Ekspert
17. juli 2005 - 19:35 #1
det er vel ikke så ulogisk at du ikke kan - super klassens constructor kører
inden sub klassens konstructor, så det vil jo være noget suspekt at
kalde en metode implementeret i sub klassen
Avatar billede amma Nybegynder
21. juli 2005 - 19:39 #2
Det kan du ikke!


du kan evt. lave det ala:


void test()
{
  MinEventAfsender ny;
  ny.setupEvents();
}

dette gøres selvfølgelig af din 'engine' eller ligende i et loop.


Mvh.
Asger
Avatar billede krismort Nybegynder
22. juli 2005 - 22:10 #3
void test()
{
  MinEventAfsender ny;
  ny.setupEvents();
}

løser sådan set ikke problematikken med at forsimple det med macroer i klasse definationen.

det skulle gerne være sådan at man kan skrive noget alá:

class MinEventDispatcher {
public:
  DECLARE_EVENTS
    DECLARE_EVENT( "MinEvent" )
    DECLARE_EVENT( "MinEvent" )
    DECLARE_EVENT( "MinEvent" )
  END_DECLARE_EVENTS
};
Avatar billede amma Nybegynder
22. juli 2005 - 22:44 #4
Hmm ... det er jo et _helt_ andet spørgsmål. Altså håndtering af events.


Kunne du definere hvad et event er i dit program? Er det med parametre, eller bare en kæmpe enum?
Avatar billede krismort Nybegynder
25. juli 2005 - 17:53 #5
Det er et signal/slot eventsystem jeg har implementeret.. alá det som du ser i boost biblioteket.
Avatar billede krismort Nybegynder
25. juli 2005 - 17:55 #6
Jeg vil gerne kunne spare nogen linier på opsætningen af event interfacet på klasser og derfor ville jeg bruge macroer... Jeg ville så gerne inkapsle setupEvents imellem DECLARE_EVENTS og END_DECLARE_EVENTS ... men jeg vil stadig gerne slippe for at skulle køre  "ny.setupEvents();" i ctor eller eller eller ved anden initialisering.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester