If you are using namespaces, look closely to make sure that the namespace/class name of the proc and the namespace/class name of the prototype match. Our tagging tries to work around some of the cases, but it can't handle every case. Also, if you don't have 21.0.1 and the latest hot fix, get it.
namespace morris {
struct The {
void cat();
void frisky();
void tunaBreath();
};
};
////////////////
void morris::The::cat() {
cout << "Dennis says this is the right way to declare namespace/class functions." << endl;
cat();
frisky();
tunaBreath();
}
///////////////
using namespace morris;
void The::frisky() {
cout << "You can do it this way too, I mean, what is the point in making the code explicit and obvious?" << endl;
}
/////////////////////////
#define MY_NAMESPACE_QUAL morris::
void MY_NAMESPACE_QUAL The::tunaBreath() {
cout << "What if someone was trying to compile this with a 20 year old C++ compiler? Oh my." << endl;
}