Without the code it is just guessing, but could it be that you have a header file and an implementation file, where the class definition in the header file has not been properly closed?
1 2 3 4 5 6 7
class example
{
void wonderfulfunction();
}; // <= I once by accident removed this line. The result is that every thing in that class (including the function implementation
// in the cpp file) was interpreted as declarations. So obviously every function was being "redefined" in the cpp file.
It is occasionally helpful to run (only) the preprocessor over your source code to help shed light on the source of ODR violations or inexplicable errors (e.g., name collisions with macros, bugs in macro definitions, or errors inserted into the source code by #include statements).
Once you do that, you can compile the resulting file (which contains the entire translation unit) to get error locations that aren't obscured by the CPP.
Check indentation and things around and inside header files; look at the whole translation unit.
This can help locate the sort of errors like Nico describes.