Run Code
|
Code Wall
|
Users
|
Misc
|
Feedback
|
About
|
Login
|
Theme
|
Privacy
Templatized Visitor Pattern Example
//Microsoft (R) C/C++ Optimizing Compiler Version 19.00.23506 for x86 #include <iostream> #include <string> using namespace std; template<typename> class IClassVisitor; class TestVisitor; template<typename T> class Visitable { public: void Accept(IClassVisitor<T>* visitor); }; class Test : public Visitable<Test> { public: Test() : val(111) {} void work() {} int getVal() { return val; } private: int val; }; template<typename T> class IClassVisitor { public: virtual void Visit(T& obj) = 0; }; template<typename T> void Visitable<T>::Accept(IClassVisitor<T>* visitor) { visitor->Visit(static_cast<T&>(*this)); } class TestVisitor : public IClassVisitor<Test> { void Visit(Test& obj) override { cout << "Visiting Test class with new Visitor. Member Value : " << obj.getVal() << endl; } }; int main() { cout << "Visitor Pattern Example" << endl; Test * ptr = new Test(); IClassVisitor<Test>* visitor = new TestVisitor(); ptr->Accept(visitor); cout << "Done" << endl; }
run
|
edit
|
history
|
help
0
Please
log in
to post a comment.
Revers find file in windows
Competitive - Algorithm for max number of superior characters
Visual Studio expand modified
Error with move capture of a const ref in a lambda function
hgh
VC++ error C2440 with combined use of non-type template parameters
Progress bar
Sum of numbers in a series using sum formular
Visual Studio C++ wont accept >> or << past the initial declarations
MSVC noexcept - works
Please log in to post a comment.