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
Đăng nhận xét