1

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

5
Contributors
6
Replies
7
Views
13 Years
Discussion Span
Last Post by Narue
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++ ><

1

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?

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.

1

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

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

This topic has been dead for over six months. Start a new discussion instead.
Have something to contribute to this discussion? Please be thoughtful, detailed and courteous, and be sure to adhere to our posting rules.