954,157 Members — Technology Publication meets Social Media
Username:
Password:
Lost login information?
Have something to say? Contribute New Article Reply to this Article

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
Newbie Poster
3 posts since Oct 2003
Reputation Points: 11
Solved Threads: 0
 

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++ >

bluegirl
Newbie Poster
3 posts since Oct 2003
Reputation Points: 11
Solved Threads: 0
 

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?

Mike29936
Newbie Poster
22 posts since Sep 2003
Reputation Points: 12
Solved Threads: 0
 

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.

bluegirl
Newbie Poster
3 posts since Oct 2003
Reputation Points: 11
Solved Threads: 0
 

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

robysad
Newbie Poster
1 post since Oct 2003
Reputation Points: 11
Solved Threads: 0
 

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*'

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 :)

CrazyDieter
Junior Poster
108 posts since Jul 2005
Reputation Points: 11
Solved Threads: 6
 

Don't resurrect ancient threads.

Narue
Bad Cop
Administrator
15,460 posts since Sep 2004
Reputation Points: 6,464
Solved Threads: 1,401
 

This article has been dead for over three months

Post: Markdown Syntax: Formatting Help
You