You haven't shown us the declaration for Club, so we don't know how you are storing the member names.
Ideally, if you've stored them as a std::set<string>, the member names will already be in alphabetical order. Given that, there are several possible approaches:
1) Iterate through the two lists and finding where there is a member in both lists, when found in both lists, insert the name into temp's set of member names.
2) Iterate though the first list and use set::find to see if the member is in the second list.
3) Iterate through the first list and use set::equal_range to see if there is a matching entry in the second list.
You're making this really difficult by not posting what is asked for. I don't care about the larger program and never asked you to post the larger program. However, I have asked for your declaration of the Club class multiple times. You're also complaining that is not printing, but you haven't shown us your print code (which has also been asked for).
As for your merge function, you're going to need a Find function which returns true if a name is a member of a club. Given that Find function, here is what you need to do (general idea. Not intended to compile):
1 2 3 4 5 6 7 8
Club temp;
for (int i=0; i<A.numMembers; i++)
{ string a_name = A.members[i];
if (B.Find(a_name))
{ // member of both clubs
temp.addMember (a_name);
}
}