I have this in my code:
const Member & Member::operator=( const Member & rhs )
{
strcpy( this->firstName, rhs.firstName );
strcpy( this->lastName , rhs.lastName );
this->gender = rhs.gender;
this->year = rhs.year;
return *this;
}
and for some reason it doesn't work if I use it.
It tells me that can't convert Member
to Member&
my teacher has it in a different class the same way and his works. I don't get why I think the signature is right and so is the return value. Some explanation could help. Thank you
Member found;
found = vertices[0].find(set.familyHead); //returns a member
ERROR:
C:\Users\Kyle\Desktop\p4-2>make
g++ -ansi -Wno-reorder -Wall -g -c familyRunner.cpp
g++ -ansi -Wno-reorder -Wall -g -c familytree.cpp
familytree.cpp: In member function 'void FamilyTree::findSet(FamilySet&)':
familytree.cpp:26:8: error: no match for 'operator=' (operand types are 'Member'
and 'Member')
found = vertices[0].find(set.familyHead);
^
familytree.cpp:26:8: note: candidate is:
In file included from familytree.h:6:0,
from familytree.cpp:1:
Member.h:19:17: note: const Member& Member::operator=(Member&)
const Member & operator=( Member & rhs );
^
Member.h:19:17: note: no known conversion for argument 1 from 'Member' to 'Member&'
Makefile:8: recipe for target 'familytree.o' failed
make: *** [familytree.o] Error 1
teacher's signature:
const string & operator= ( const string & rhs ); // Copy