I tried this:
Below is the compilation error:Code:#include <iostream> #include <vector> using namespace std; template <class MyDummyClass, typename ReturnType, typename Parameter> class SingularCallBack { public: typedef ReturnType (MyDummyClass ::*Method)(Parameter); SingularCallBack(MyDummyClass* _class_instance, Method _method) { class_instance = _class_instance; method = _method; }; ReturnType execute(Parameter parameter) { return (class_instance->*method)(parameter); }; private: MyDummyClass* class_instance; Method method; }; class BaseClass { public: virtual bool DerivedMethod (const std::string& str) { return true; } }; class AClass : public BaseClass { public: template < class derivedComponent, class Allocator = allocator<derivedComponent> > class callbackList; AClass () {} bool AMethod( std::string& str) { std::cout << "AClass[]: " << str << std::endl; return true; } }; int main() { AClass a (); a.callbackList.push_back (SingularCallBack < AClass, bool, const std::string& > (&a, &AClass :: AMethod, "sadsa")); return 0; }
Please help.Code:anisha@linux-uitj:~> g++ callback3.cpp -Wall -Wextra callback3.cpp:31: warning: unused parameter ‘str’ callback3.cpp: In function ‘int main()’: callback3.cpp:54: error: request for member ‘callbackList’ in ‘a’, which is of non-class type ‘AClass()’ callback3.cpp:54: error: no matching function for call to ‘SingularCallBack<AClass, bool, const std::string&>::SingularCallBack(AClass (*)(), bool (AClass::*)(std::string&), const char [6])’ callback3.cpp:11: note: candidates are: SingularCallBack<MyDummyClass, ReturnType, Parameter>::SingularCallBack(MyDummyClass*, ReturnType (MyDummyClass::*)(Parameter)) [with MyDummyClass = AClass, ReturnType = bool, Parameter = const std::string&] callback3.cpp:7: note: SingularCallBack<AClass, bool, const std::string&>::SingularCallBack(const SingularCallBack<AClass, bool, const std::string&>&)



1Likes
LinkBack URL
About LinkBacks




