Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- class mixin_base {
- public:
- mixin_base() : m_flags(0) {
- printf("in mixin_base constructor\n");
- }
- int m_flags;
- protected:
- void set_mixin_flags(int flags) {
- m_flags |= flags;
- printf("mixin_base adding flags %x, now %x\n", flags, m_flags);
- }
- };
- template <typename T>
- class mixin1 : public T, virtual public mixin_base {
- public:
- mixin1() : mixin_base() {
- printf("in mixin1 constructor\n");
- set_mixin_flags(0x1);
- }
- };
- template <typename T>
- class mixin2 : public T, virtual public mixin_base {
- public:
- mixin2() : mixin_base() {
- printf("in mixin2 constructor\n");
- set_mixin_flags(0x2);
- }
- };
- class thing {
- public:
- thing() {
- printf("in thing constructor\n");
- }
- };
- int main(int argc, char **argv) {
- mixin1< mixin2< thing > > x;
- printf("x flags: %x\n\n", x.m_flags);
- mixin2< mixin1< thing > > y;
- printf("y flags: %x\n\n", y.m_flags);
- mixin1< thing > z;
- printf("z flags: %x\n", z.m_flags);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement