Original Post
Use case:
ManagedSuper *s = GetSomething();
if (typeid(*s).name() == "Derived1") DoSomething(s->d1);
if (typeid(*s).name() == "Derived2") DoSomething(s->d2); Is this a reasonable use case? Better way to do it? I want to have a unified list of Super*s which can be either Derived1 or Derived2, and I want to know which it is, because its not doing polymorphic things so much as it is storing data. perhaps boost::variant is a better idea? Anyway, is this the right idea to wrap my C++ model so I can use it in C#? struct Super {};
struct Derived1 : public Super {int d1;};
struct Derived2 : public Super {int d2;};
//..........
public ref struct ManagedSuper {Super* super; ctor; dtor;};
public ref struct ManagedDerived1 : public ManagedSuper
{
ManagedDerived1(){Super* derived1 = new Derived1;}
~ManagedDerived1(){delete derived1;}
}
public ref struct ManagedDerived1 : public ManagedSuper
{
ManagedDerived2(){Super* derived2 = new Derived2;}
~ManagedDerived2(){delete derived2;}
}