Sign in to follow this  

Can't understand exercise

This topic is 1747 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

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.

Share this post


Link to post
Share on other sites
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?

Share this post


Link to post
Share on other sites

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

Edited by noatom

Share this post


Link to post
Share on other sites

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.

Share this post


Link to post
Share on other sites

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.

Edited by wintertime

Share this post


Link to post
Share on other sites

This topic is 1747 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this