Run Code
|
API
|
Code Wall
|
Misc
|
Feedback
|
Login
|
Theme
|
Privacy
|
Patreon
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
Overload
Hangman
operator new / delete
du
#7
sinem çalışma
hangman
Build char string (multibyte) with wchar
fatal error LNK1123: failure during conversion to COFF: file invalid or corrupt
hangman