RSS LJ

February 14, 2011

C++ wishlist: Abstract-on-subclass (, )

by fluffy at 6:50 PM

In C++ you can mark a method as being abstract pretty trivially, e.g.:

class A {
  virtual foo() = 0;
};

which makes it so that you can't instantiate anything that derives from A until the method foo has an implementation. This is a very useful pattern.

What it's missing, however, is a way of insisting that every instantiable instance of A must provide its own implementation of foo; for example:

class A {
  virtual foo() = 0;
};

class B: public A {
  virtual foo() {}
};

class C: public B {
};

It would be nice if in this case, there were a way to make it so you can't instance C until it gets its own implementation of foo.

Of course, the situation I've run into where this would be exceptionally useful (having a complex DOM which needs per-class script bindings) is kind of nichey, and I can't really see it adding much value to the language as a whole. Still, I can dream...

Comments