Can't understand exercise

Started by
3 comments, last by wintertime 11 years ago

English is not my primary language,so that might be the issue,anyway,here it is:

Create a class X and declare(don't define) a private copy-constructor.Make a public clone() function as a const member function that returns a copy of the object that is created using new.Now write a function that takes as an argument a const X& and clones a local copy that can be modified.


class X{
X(X&);
public:
X clone()const {
X* a = new X;
}
};

void func(const X& i){
i.clone();
}

The code is not complete,and the whole clone function might be wrong.Can someone explain what the exercise actually asks? Does it asks for a function that I can call like this?

X obj;

obj.clone(); //returns a new copy of X

If that's what it asks for,how would I do that? I tried this:

*a = this;

but gives an error.

Advertisement
clone() has to return a pointer. Otherwise you have no way to clean up using `delete' when you are done with the copy.

Does that help?

damn,can't believe i didn't remember that "this" is a pointer.So,using a dereferenced this solves the thing.Thanks

damn,can't believe i didn't remember that "this" is a pointer.So,using a dereferenced this solves the thing.Thanks

Wait a minute. Do you actually copy the content of your X in your clone() method, without sharing the data in the original X instance? Write the necessary parts of class X (some data to modify, the definition of the copy constructor) and tests to prove how your exercise behaves.

Omae Wa Mou Shindeiru

Its tempting to just type the solution, because its actually easy if you just follow every single step of the text in the exercise. But you wouldnt learn from others doing it for you so I wont.

Some hints:

- You are doing it very wrong.

- Erase the body of clone and func and try again. Remember to use a return statement for a function that returns a value.

This topic is closed to new replies.

Advertisement