Hello,
i have a question related to Realview Compiler V3.0. Is the forward declaration of a class not supported or is it a mistake of me? Please look the example below:
class clsB; // Forward Declaration Not Working class clsA { public: clsA(); // Constructor clsB oB; // Compiler error: #70: incomplete type is not allowed }; class clsB { public: clsB(); // Constructor };
Thank you Eugen
The forward declaration worked fine. It is the use of the incomplete type that is not allowed.
class clsA { public: clsA(); // Constructor clsB oB; // Compiler error: #70: incomplete type is not allowed };
Is not allowed (because it needs to know the full type of claB)
class clsA { public: clsA(); // Constructor clsB *oB; // No Compiler error: };
Is allowed because it does not need to know the full type of claB at this point.
thank you Per for your reply.
Eugen
It is a mistake by you.
The forward declaration only informs that there is a class clasB - the compiler doesn't know it's size, so you can't have a member of type clasB.
You can have a member of reference to clasB or pointer to clasB, since they have fixed size.
View all questions in Keil forum