Hacker Newsnew | past | comments | ask | show | jobs | submitlogin

metoo, but how do you pull that off in C++? How do you get back from node to containing value?

Multiple inheritance, possible but you'd have to jump some hoops to disambiguate since you're dealing with multiple copies of the same base class.



Composition. Sorry about the syntax - its been awhile since I wrote C++.

    class<T> IntrusiveListNode { T* next, T* prev }

    class SomeObj {
        IntrusiveListNode<SomeObj> list_foo;
        IntrusiveListNode<SomeObj> list_bar;
    }


Ah, of course; templates and linking the full object.

Thanks for the update, my C++ is pretty rusty.

But it brings up another problem for me; when iterating a list like that, how do you know which of the links to follow? I get that you can do it manually step by step, but if you wanted to say write an iterator. Member pointers?




Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: