Hacker News new | ask | show | jobs
by KonkeyDong69 3091 days ago
I would caution against using this pattern. In particular, this does not scale to:

    class A {};
    class B : public A {};
    class C : public B {};
Using the convention of defining `base_type` in the base class means that C will expect B to define `base_type`, which means that B will be cut off from A's `base_type`. This then forces you to use different identifiers, which brings you back to square one (you might as well just explicitly write out the class in that case).
1 comments

> brings you back to square one

Not exactly, since C's constructor does not call A's directly. (On the other hand, base_class::base_class might just do the trick.)