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

Yup. It's possible to do that. My point was that if you want to do that you break the encapsulation, i.e. contained object would have to know about its container(s). This applies to Boost intrusive lists as well AFAICS.


Which is entirely true, and is often the case when performance is a goal - abstractions must be broken. But that is not an argument for or against C++.


I've given an example of the language extension that would solve the problem at the end of the article.


C++ already allows such a thing using the "curiously recurring template pattern" (http://en.wikipedia.org/wiki/Curiously_recurring_template_pa...), often now called "mixins":

  class person
  {
  protected:
      int age;
      int wieght;
  };

  template <class Base>
  class people: public Base
  {
  private:
      Base *prev;
      Base *next;
  };

  people<person> plist;


Your language extension sounds a lot like the friend keyword.


That's what I thought at first, but friend is for when you want class A to be able to view private things of class B. That is, B needs to know ahead of time what A is interested in. He wants B to remain ignorant of what A wants - he wants A to be able to insert new fields into B. But we can accomplish the same thing with mixins.




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

Search: