Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstddef>
- enum variety{
- oolong,
- green,
- };
- class T
- {
- public:
- virtual void drink() = 0;
- };
- class T1: public T
- {
- T1() = delete;
- public:
- T1(int a):
- sugar(a)
- {
- std::cout<<"T1 ctorn";
- }
- void drink()
- {
- std::cout<<"Sipping oolong with sugar: "<<sugar<<'n';
- }
- ~T1()
- {
- std::cout<<"T1 dtorn";
- }
- private:
- int sugar;
- };
- class T2: public T
- {
- T2() = delete;
- public:
- T2(int a):
- sugar(a)
- {
- std::cout<<"T2 ctorn";
- }
- void drink()
- {
- std::cout<<"Sipping green with sugar: "<<sugar<<'n';
- }
- ~T2()
- {
- std::cout<<"T2 dtorn";
- }
- private:
- int sugar;
- };
- class TFactory
- {
- TFactory() = delete;
- public:
- static T* brew(variety v, int sugar){
- if(v == oolong)
- return new T1(sugar);
- else if (v== green)
- return new T2(sugar);
- else
- return nullptr;
- }
- };
- int main(){
- T* t1 = TFactory::brew(oolong, 5);
- t1->drink();
- delete t1;
- }
Add Comment
Please, Sign In to add comment