How can I delete all the pointer in my vector before that I going to copy to my vector new pointers (in case of const object)?
class Element {
    int val;
public:
    Element(int val) :
            val(val) {
    }
};
class MyClass {
    vector<Element*> v;
    static void FreeMemory(vector<Element*>& vec) {
        for (unsigned int i = 0; i < vec.size(); i++) {
            delete vec[i];
        }
    }
public:
    MyClass() = default;
    MyClass(const MyClass& mc) {
        //...
    }
    MyClass& operator=(const MyClass& mc) {
        if (this == &mc) {
            return *this;
        }
        //...
        FreeMemory(mc.v); //**error** - how can I delete the memory of any Element?
        //...
        return *this;
    }
    // ....
    // ....
};   
binding 'const std::vector' to reference of type 'std::vector&' discards qualifiers
Can I fix it with smart_pointers?
 
    