dimanche 17 juin 2018

How can I fix this error in this case? "Invalid arguments ' Candidates are: void FreeMemory(std::vector

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

Aucun commentaire:

Enregistrer un commentaire