The solution to my problem today was slightly different that the other answers here.
In my case, the problem was caused by a missing close bracket (}
) at the end of one of the header files in the include chain.
Essentially, what was happening was that A
was including B
. Because B
was missing a }
somewhere in the file, the definitions in B
were not correctly found in A
.
At first I thought I have circular dependency and added the forward declaration B
. But then it started complaining about the fact that something in B
was an incomplete type. That's how I thought of double checking the files for syntax errors.