diff --git a/seminar04_templates/07_manager/main.cpp b/seminar04_templates/07_manager/main.cpp deleted file mode 100644 index 870865b..0000000 --- a/seminar04_templates/07_manager/main.cpp +++ /dev/null @@ -1,42 +0,0 @@ -#include -#include - -template -class Manager { -private: - T* mPtr; -public: - Manager() { - mPtr = nullptr; - } - void allocate() { - mPtr = (T*)malloc(sizeof(T)); - } - void construct(const T& t) { - new(mPtr) T{t}; - } - T& get() { - return *mPtr; - } - void destruct() { - mPtr->~T(); - } - void deallocate() { - free(mPtr); - } -}; - -int main() { - Manager a; - a.allocate(); - a.construct("Cats and dogs"); - a.get() += " and elephants"; - std::cout << a.get() << std::endl; - a.destruct(); - - a.construct("Sapere aude"); - std::cout << a.get() << std::endl; - - a.destruct(); - a.deallocate(); -} diff --git a/seminar04_templates/08_ref/main.cpp b/seminar04_templates/08_ref/main.cpp deleted file mode 100644 index 1f9f0f9..0000000 --- a/seminar04_templates/08_ref/main.cpp +++ /dev/null @@ -1,74 +0,0 @@ -#include -#include -#include - -using std::cout, std::endl, std::string, std::vector; - -template -class Ref { -private: - T* mPtr; -public: - Ref(T& t) { - mPtr = &t; - } - Ref(Ref& t) { - mPtr = t.mPtr; - } - Ref() { - mPtr = nullptr; - } - T& get() { - return *mPtr; - } - T operator=(const T& t) { - new(mPtr) T{t}; - return *mPtr; - } - T operator+(const T& t) { - return *mPtr + t; - } - T operator+=(const T& t) { - *mPtr = *mPtr + t; - return *mPtr; - } - T* operator->() { - return mPtr; - } - template - friend std::ostream& operator<<(std::ostream& out, Ref r); -}; - -template -std::ostream& operator<<(std::ostream& out, Ref r) { - out << *(r.mPtr); - return out; -} - -void toUpper(Ref r) { - for(size_t i = 0; i < r->size(); ++i) - r.get()[i] = toupper(r.get()[i]); -} - -int main() { - int a = 10; - Ref ra = a; - cout << ra << endl; - - string s = "Cat"; - Ref rs = s; - rs = "Mouse"; - rs += "Elephant"; - cout << rs << endl; - cout << s << endl; - - toUpper(s); - cout << s << endl; - - vector animals {"Cat", "Dogs", "Elephants", "Worms"}; - vector> refs {animals.begin(), animals.end()}; - - for (int i = 0; i < refs.size(); ++i) - cout << animals[i] << " "; - cout << endl; -}