DaniWeb IT Discussion Community

DaniWeb IT Discussion Community (http://www.daniweb.com/forums/index.php)
-   C++ (http://www.daniweb.com/forums/forum8.html)
-   -   copy constructor problem (http://www.daniweb.com/forums/thread1318.html)

bluegirl Oct 13th, 2003 10:28 pm
copy constructor problem
 
Hi, i need help creating a copy constructor.
i have a class called CElist (and another called CEmployee)
and it contains methods like this one:

bool CElist::getFirst(CEmployee& e)
{
//do some stuff
//sets e to the first employee and returns true
//returns false if it cant
}

my problem is with the copy constructor:

CElist::CElist(const CElist& eList)
{
CEmployee newEmp;
eList.getFirst(newEmp); //this is the error part! --> cannot convert 'this' pointer from 'const class CElist' to 'class CElist &'

this.setFirst(newEmp);
//do other stuff
}

i dont think im changing the eList right? Right now the only solution i can think of is to create a different function that returns the first CEmployee, not a bool...
>< thanks for any help :)

bluegirl Oct 14th, 2003 1:38 am
Re: copy constructor problem
 
hmm.. well it works if i dont make the paramter const, so then i guess my question would be, does the parameter for a copy constructor always have to be const? (i know if im just copying values it should be, but....)

sorry, im new at c++ ><

Mike29936 Oct 14th, 2003 3:42 pm
Re: copy constructor problem
 
You only make something const(constant) if it's , well, constant. If you're going to change anything about it, or any sorts of funky errors pop up, you're better off not const-ing it.

I personally never use const, though I did take C first, so that might have something to do with it. If it's not absolutely required that you put const there, then don't.

What are you doing in your program, though?

bluegirl Oct 15th, 2003 4:33 am
Re: copy constructor problem
 
oh its to maintain a list of employees (for one of my assignments...) but its alrite^^ i fixed it --> didnt know that i can access the private data members of the passed instance in the constructor... i htought it would be illegal but guess not^__^
i learned java before, but now im doing c++, and its ...werid :) hehe
thanks for the reply.

robysad Oct 18th, 2003 11:17 pm
Re: copy constructor problem
 
i thought it's wrong ,whick use const parameter to construct Class CELIST,illegel grammar.
CElist::CElist(const CElist& eList)//org
CElist::CElist(CElist& eList)//try it

CrazyDieter Jul 7th, 2005 4:38 am
Re: copy constructor problem
 
For me, the problem is the following :

in your CElist constructor, the parameter is const, so you cannot call methods that are not const on this object.

You have to change the signature of your getFirst method :

bool CElist::getFirst(CEmployee& e) const;

if this method do not modifies modifies the insternal state of the object (because now 'this' is a 'const CElist*'

Quote:

Originally Posted by bluegirl
Hi, i need help creating a copy constructor.
i have a class called CElist (and another called CEmployee)
and it contains methods like this one:

bool CElist::getFirst(CEmployee& e)
{
//do some stuff
//sets e to the first employee and returns true
//returns false if it cant
}

my problem is with the copy constructor:

CElist::CElist(const CElist& eList)
{
CEmployee newEmp;
eList.getFirst(newEmp); //this is the error part! --> cannot convert 'this' pointer from 'const class CElist' to 'class CElist &'

this.setFirst(newEmp);
//do other stuff
}

i dont think im changing the eList right? Right now the only solution i can think of is to create a different function that returns the first CEmployee, not a bool...
>< thanks for any help :)


Narue Jul 7th, 2005 6:29 pm
Re: copy constructor problem
 
Don't resurrect ancient threads.


All times are GMT -4. The time now is 7:10 am.

Forum system based on vBulletin Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
©2003 - 2009 DaniWeb® LLC