Hi, i have a question about C++. Is it possible to declare a class with a member ot the same class? For example, a linked list or i want to convert this C code to C++ class (Elemento)
I don't think you can. Think about it: Wouldn't that class inside the class, also have a class inside the class? Which would also have a class inside the class. etc. etc. etc. If you want different things to have different members, they have to be different structures.
That way it only allocates the size of the pointer, not the entire struct, avoiding the infinite recursion. This means you have to explicitly allocate memory to it later to use it, of course.
Always keep in mind that you are bound to get an error generated by the compiler (irrespective of the compiler's origin) that if its not following the below rule (although unstated anywhere in books -its my own logic to predict a code's compilability ) -
"unless you are able to calculate the size of a class / struct; manually (by simple addition of all the member's size); its not gona compile."
Now apply this rule and try calculating the size off the class, which you have define. Are you not going into an infinite loop of calculation?
The above definition are not gona work.
You may wish to call it praveen's compilability rule
Any comments?
---------- Post updated at 11:17 AM ---------- Previous update was at 11:03 AM ----------
Absolutely true!!!
However, here again "The Rule" works well to predict what's compilable and what's not.
In the later example, the pointer :
struct linkedlist *next;
scores 4-bytes /8-bytes respectively on 32-bit / 64-bit systems and hence enabling you to calculate the size of the struct.
However, its simple examples however the real advantages come when you have got complicated scenarios and / or working in environments where you can not afford to compile more frequently to see the results (like an outdated embedded programming environment or with cross compilers on 486 machine hosts
Corrona688 and Praveen_218: What's really being asked about here is using a class as a template parameter within itself (despite what the title may suggest). You can do that - not sure what restrictions there are on that, but it's definitely possible.
I'm sure if the OP has a specific problem, they'll post a short snippet of code that demonstrates it.