1. #1
    Kemblin's Avatar
    Registered
    14/05/03
    Location
    Schoten
    Posts
    812
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/7

    Policy based design

    Ik ben met c++ templates bezig en probeer zowat een policy based design te implementeren.
    Ik zit nu met een probleempje waar ik maar niet uitkom.

    Code:
    template <typename T>
    class format2 { 
    	public:
    		format2();
    		format2(size_t rows, size_t columns);
    		format2(size_t rows, size_t columns, T elements[]);
    		format2(format2<T> const& f);
    };
    
    template <typename T>
    class format1 { 
    	public:
    		format1();
    		format1(size_t rows, size_t columns);
    		format1(size_t rows, size_t columns, T elements[]);
    		format1(format1<T> const& f);
    };
    
    
    
    template <typename FORMAT>
    class m : public FORMAT { 
    	public:
    		m() : FORMAT () { }
    		m(size_t rows, size_t columns) : FORMAT (rows, columns) { }
    		=> m(size_t rows, size_t columns, FORMAT :: T elements[]) : FORMAT (rows, columns, elements) { }
    		=> m(m< FORMAT > const& m) : FORMAT (FORMAT) { }
    };
    De rode template-parameter T wordt niet herkend, wat wss wel logisch zal zijn maar ik zie het even niet momenteel. De copy constructor eronder werkt ook niet echt. Ik wil uiteindelijk zoiets kunnen doen:

    Code:
    m< format1<int> > m1(3, 4, elements);
    Iemand een id'tje ?
    there you go
    no votes  

  2. #2

    Registered
    15/07/08
    Location
    genk
    Posts
    83
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Het is logisch dat deze niet herkent wordt, aangezien je bij de laatste block code template <typename FORMAT> gebruikt ipv template <typename T>
    Last edited by nguaroth; 01-08-2010 at 15:13.
    no votes  

  3. #3
    Kemblin's Avatar
    Registered
    14/05/03
    Location
    Schoten
    Posts
    812
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/7
    hmm ik snap u niet volledig denk ik?

    aangezien die laatste klasse overerft van FORMAT leek het mij logisch dat ook T wordt overgeerft?
    there you go
    no votes  

  4. #4

    Registered
    25/06/04
    Location
    Evergem
    Posts
    512
    iTrader
    14 (100%)
    Mentioned
    0 Post(s)
    Reputation
    0/6
    Op het moment dat je je klasse m definieert kan FORMAT gelijk wat zijn. Uw klasse m kan dus ook niet weten wat hij allemaal overerft (omdat dat pas vast staat wanneer ge uw template klasse instantieert). Dus kent hij die T ook niet.
    CrackNuT. ]
    It's not a bug, it's just an undocumented feature!
    no votes  

  5. #5
    Kemblin's Avatar
    Registered
    14/05/03
    Location
    Schoten
    Posts
    812
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Reputation
    1/7
    al ff geleden maar heb het net getest en het werkt zo thanks Nocturn!

    Enig id wat er bij mij fout liep?
    there you go
    no votes  

  6. #6

    Registered
    15/07/08
    Location
    genk
    Posts
    83
    iTrader
    1 (100%)
    Mentioned
    0 Post(s)
    Wel, @ compile time weet de compiler niet welk type FORMAT precies heeft, waardoor hij ook nie kan weten wat er precies in FORMAT zit.
    no votes  

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •  

Log in

Log in