template<int I, char* H, int N> warum geht das nicht?



  • Hallo,

    ich weiss zwar grad nicht ob der beitrag nicht in ein compiler forum gehört, aber es ist eigentlich eher dem allgemeinen c++ zugeordnet.

    also wenn ich eine tmpl-klasse so verwenden wollen würde

    template<int I, char* H, int N>class Feld
    ...
    
    const char* test = {"bla bla bla"} ; 
    
    typedef Feld< 3, test, -1>
      SpezFeld ;
    

    bekomme ich diese fehlermeldung
    c:\projekte\test.h(196) : error C2975: 'Feld' : Ungueltiges Vorlagenargument für 'H', konstanter Ausdruck erwartet

    kann mich mal wer aufklären 😕

    der code lief urspünglich mal unter borland und soll jetzt auf visual studio portiert werden ... naja mal gucken ..



  • test am besten mal ersetzten durch "test" ?



  • ne das geht auch nicht

    error C2964: Ungueltiger Ausdruck als Vorlagenparameter

    ich denke mal eher, dass VS6 wohl nicht mit einem char* beim template umgehen kann, da wie die fehlermeldung sagt, es sich hierbei um keinen konstanten wert handelt - kann ja relativ lang sein.



  • hmm seltsamerweise funktioniert es so

    char test[128] = {"bla bla bla"} ;
    


  • test ist nicht konstant


Log in to reply