Hi I am trying to convert some code I wrote in C++ to D to give it a try and I have come across some code that I dont know how to convert. I have simplified the code to illustrate the problem I have. How do I do this in D?
class IFieldSetter { public: virtual void SetValue(void * object, const void * value) = 0; }; template <class C, class T> class FieldSetter : public IFieldSetter { private: typedef T (C::* MemberField); MemberField field; public: FieldSetter(MemberField afield) : field(afield) {} void SetTypedValue(C * object, const T& value) { object->*field = value; } void SetValue(void * object, const void * value) { SetTypedValue((C*) object, (const T&) value); } }; class MySampleClass { public: int Status; std::string Name; }; void main(void) { IFieldSetter * StatusSetter = new FieldSetter<MySampleClass,int>(&MySampleClass::Status); IFieldSetter * NameSetter = new FieldSetter<MySampleClass,std::string>(&MySampleClass::Name); MySampleClass * a = new MySampleClass(); MySampleClass * b = new MySampleClass(); StatusSetter->SetValue(a, (void*)20); StatusSetter->SetValue(b, (void*)40); NameSetter->SetValue(a, "2002"); NameSetter->SetValue(b, "2002"); } Thanks Craig