Click here to Skip to main content
15,914,160 members
Home / Discussions / C / C++ / MFC
   

C / C++ / MFC

 
GeneralRe: Template Class issues in C++. Pin
NeoAks00714-Mar-09 7:38
NeoAks00714-Mar-09 7:38 
GeneralRe: Template Class issues in C++. Pin
N a v a n e e t h14-Mar-09 7:45
N a v a n e e t h14-Mar-09 7:45 
QuestionRe: Template Class issues in C++. Pin
NeoAks00714-Mar-09 7:50
NeoAks00714-Mar-09 7:50 
AnswerRe: Template Class issues in C++. Pin
Stuart Dootson14-Mar-09 8:07
professionalStuart Dootson14-Mar-09 8:07 
AnswerRe: Template Class issues in C++. Pin
N a v a n e e t h14-Mar-09 8:14
N a v a n e e t h14-Mar-09 8:14 
QuestionRe: Template Class issues in C++. Pin
NeoAks00714-Mar-09 8:32
NeoAks00714-Mar-09 8:32 
NewsRe: Template Class issues in C++. Pin
NeoAks00714-Mar-09 9:16
NeoAks00714-Mar-09 9:16 
AnswerRe: Template Class issues in C++. Pin
Stuart Dootson14-Mar-09 9:38
professionalStuart Dootson14-Mar-09 9:38 
That's a tricky one. I'd probably try it like this:

Add virtual destructors to DummyBase, B and C, to ensure a v-table. Then you can use dynamic_cast to work out which typ has been returned:

class DummyBase { virtual ~DummyBase() {} };

template <'class abc'>
class Base{
public:
      abc func1();
};

class B : public Base`<datatype1`>, DummyBase{
   virtual ~B() {}
      // Class Definitions
};
class C : public Base`<datatype2`>, DummyBase{
   virtual ~C() {}
      // Class Definitions
};

class A: public Base`<datatype3`>, DummyBase{
public:
      B obj1;
      C obj2;
      DummyBase* search(int condition)  //What do I specify return type???
      {
            if(condition==1)
                  return &obj1;
            if(condition==2)
                  return &obj2;
            if(condition==3)
                  return this;
      }
};

void main()
{
      DummyBase *ptr;
      A objA;
      int n;
      cin>>n;
      ptr = objA.search(n);
      if (B* bPtr = dynamic_cast<B*>(ptr))
      { bPtr->func1(); }
      if (C* bPtr = dynamic_cast<C*>(ptr))
      { bPtr->func1(); }
}


Yeah, it sucks because you're taking so many decisions. There are probably better ways, but I've not really put sufficient thought into it to think of a better one.

Possibly something like Boost.Variant or Boost.Any might make things nicer.

Java, Basic, who cares - it's all a bunch of tree-hugging hippy cr*p

QuestionRe: Template Class issues in C++. Pin
NeoAks00714-Mar-09 9:58
NeoAks00714-Mar-09 9:58 
AnswerRe: Template Class issues in C++. Pin
Stuart Dootson14-Mar-09 10:20
professionalStuart Dootson14-Mar-09 10:20 
QuestionRe: Template Class issues in C++. Pin
NeoAks00714-Mar-09 10:27
NeoAks00714-Mar-09 10:27 
AnswerRe: Template Class issues in C++. Pin
Stuart Dootson14-Mar-09 10:38
professionalStuart Dootson14-Mar-09 10:38 
QuestionRe: Template Class issues in C++. [modified] Pin
NeoAks00714-Mar-09 10:47
NeoAks00714-Mar-09 10:47 
AnswerRe: Template Class issues in C++. Pin
Joe Woodbury15-Mar-09 17:50
professionalJoe Woodbury15-Mar-09 17:50 
NewsRe: Template Class issues in C++. Pin
NeoAks00725-Mar-09 21:48
NeoAks00725-Mar-09 21:48 
QuestionConversion Pin
durban214-Mar-09 5:06
durban214-Mar-09 5:06 
AnswerRe: Conversion Pin
CPallini14-Mar-09 5:13
mveCPallini14-Mar-09 5:13 
GeneralRe: Conversion Pin
durban214-Mar-09 5:42
durban214-Mar-09 5:42 
GeneralRe: Conversion Pin
CPallini14-Mar-09 7:17
mveCPallini14-Mar-09 7:17 
QuestionPCI driver development Pin
Deepu Antony14-Mar-09 4:34
Deepu Antony14-Mar-09 4:34 
QuestionHow to place a Bitmap in the center of a Cdocument document on startup Pin
Larry Mills Sr14-Mar-09 3:13
Larry Mills Sr14-Mar-09 3:13 
AnswerRe: How to place a Bitmap in the center of a Cdocument document on startup Pin
Code-o-mat14-Mar-09 5:44
Code-o-mat14-Mar-09 5:44 
GeneralRe: How to place a Bitmap in the center of a Cdocument document on startup Pin
Larry Mills Sr14-Mar-09 6:24
Larry Mills Sr14-Mar-09 6:24 
GeneralRe: How to place a Bitmap in the center of a Cdocument document on startup Pin
Code-o-mat14-Mar-09 6:35
Code-o-mat14-Mar-09 6:35 
GeneralRe: How to place a Bitmap in the center of a Cdocument document on startup Pin
Larry Mills Sr15-Mar-09 9:24
Larry Mills Sr15-Mar-09 9:24 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.