Jump to content

  • Log In with Google      Sign In   
  • Create Account

Chris_J_H

Member Since 21 May 2011
Offline Last Active Mar 17 2014 03:26 AM

#5064402 Help with Polymorphic Class Design

Posted by Chris_J_H on 24 May 2013 - 02:39 AM

Hi - apologies if this is a bit vague but I am trying to understand the consequences of some base class design choices in my game engine. Below are 2 simplified Process classes that are designed to be used as Base Classes. It seems to me on the face of it Process1 is a better design choice as it demands way less of clients' derived classes - eg, having to remember to invoke Process1::VPause() - although I guess there is a loss of flexibility... In Derived2 for example the client could choose not to pause the process if some condition is met.
 
Insight/Advice appreciated - is there a better way? I really hate the routine requirement to invoke the base class VPause()... it seems to be asking for trouble.

 


class Process1

{

public:

    virtual ~Process1();

 

    bool GetPaused() const {return m_bPaused;}

    void SetPause(bool b) {if (b!=GetPaused()) {m_bPaused = b; VPause(b);}}

 

protected:

    virtual void VPause(bool b) { }

 

private:

    bool m_bPaused;

};

 

class Derived1 : public Process1

{

//...

   void VPause(bool b) override { /* do something - no need to worry about m_bPaused, invoking Process1::VPause() etc*/}

};

 

// --------------------------------------------------------------------------------

 

class Process2

{

public:

   virtual ~Process2();

 

   bool GetPaused() const {return m_bPaused;}

   virtual void VPause(bool b) {m_bPaused = b;}

 

private:

   bool m_bPaused;

};

 

class Derived2 : public Process2

{

//...

   void VPause(bool b) override {

   if (b!=GetPaused()) {

      //...

   }

   Process2::VPause(b);}

};

 




#5022833 Algorithm for generating indices

Posted by Chris_J_H on 18 January 2013 - 04:02 AM

Suggestion: How about hashing by rounded floating point values.


PARTNERS