Sign in to follow this  
Followers 0
noatom

Can't understand exercise

4 posts in this topic

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.

0

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?
0

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
0

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.
0

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
0

Share this post


Link to post
Share on other sites

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  
Followers 0