How to declare a self-referential container in C++?

<p>For a <code>typedef</code> of a <code>struct</code> in C, I can't do this:</p><pre><br /><code>typedef struct {<br /> unsigned id;<br /> node_t *left;<br /> node_t *right;<br />} node_t;<br /></code><br /></pre><p>because <code>node_t</code> is not known until it is defined, so it can't be used in its own definition. A bit of a Catch-22. However, I can use this workaround to make the desired self-referential type:</p><pre><br /><code>typedef struct node_s node_t;<br />struct node_s {<br /> unsigned id;<br /> node_t *left;<br /> node_t *right;<br />};<br /></code><br /></pre><p>Similarly, I would like to do something like this for a C++ container referring to itself:</p><pre><br /><code>typedef pair<unsigned, pair<node_t *, node_t * > > node_t;<br /></code><br /></pre><p>but of course, the compiler complains that it's never heard of <code>node_t</code> before it's defined <code>node_t</code>, as it would for the <code>struct typedef</code> above.</p><p>So is there a workaround like for the <code>struct</code>? Or some better way to do this? (And no, I don't want to use <code>void</code> pointers.)</p><br /><h2>Click here view more answers <a href="%20http://stackoverflow.com/questions/34525071/how-to-declare-a-self-referential-container-in-c">http://ift.tt/1ks1NvQ</a></h2>

Nhận xét

Bài đăng phổ biến từ blog này

Align div to bottom of the page in bootstrap

Align elements inside an tag vertically

Javascript is unable to stop page loading