You need two updateReligionYields() functions: one taking zero parameters, and one taking the YieldTypes. You have the latter already; you need to add the zero-argument version that loops over all the yields, calling the other one for each.
Code:
void CvCity::updateReligionYields()
{
for (i = 0; i < NUM_YIELD_TYPES; i++)
{
updateReligionYields((YieldTypes)i);
}
}
1. You should be able to safely use them for testing since there are more commerce types than yield types. The effect is that you'll gain +1

for having the religion and +5

for the holy city because

and

are both the 3rd type in their respective enums.
Eventually you'll need to add your own getStateReligionYield() and getHolyCityYield() functions to CvReligionInfo and read their values from the XML. But as long as you just want a simple value to see that your code is working, I suggest that you hard-code values rather than call unrelated functions as above.
Code:
if (isHasReligion(eReligion))
{
iYield += 1; // TODO: CvReligionInfo::getStateReligionYield(eYield)
if (isHolyCity(eReligion))
{
iYield += 3; // TODO: CvReligionInfo::getHolyCityYield(eYield)
}
}
2. That looks fine. I thought CvCity::init() created the array, but I see from your code that it happens in the constructor--CvCity::CvCity().
3. CvPlayer needs a function to call when the player changes state religion. That function needs to loop over every city for the player, telling each to update themselves. CvPlayer calls its function from setStateReligionCount() and setLastStateReligion().
Also, CvGame::setHolyCity() needs to call CvCity::updateReligionYields() just like it calls updateReligionCommerce(). There are two places in that function.
4. That's a very strange crash. At first it sounds like an infinite loop, but when you go back to windows you say that it's doing the normal crash dump. It's odd that it doesn't exit the graphics environment first. Perhaps try your testing in non-full-screen mode? It won't fix it, but it will make dealing with crashes easier.
5. The only thing related to ReligionYield I can find is
VoteSourceInfo::getReligionYield(). Names in one class have no bearing on names in another class. Using the same name in two classes is a good thing if they are related.
For example, VoteSourceInfo and CvCity both have a function called getReligionCommerce(). They are slightly related, though the one in VSI applies to buildings while the one in CvCity applies to the city as a whole. However, they both relate to commerce types gained from having a religion.
What IDE/editor do you use to do your coding? I use Visual Studio 2005 (not 2008 only because the instructions I originally used were for 2005; I'll probably switch when I have some free time), and it has a very handy feature. Right-click on a function/variable name and select Find All References. It then shows every place in all files in the SDK that reference that function: the declaration, definition, and every place that calls it. This is how I am finding all of the above information.