Bonjour,
Je suis confronté à un problème sur les templates.
Je dois créer un classe en utilisant un librairie C. Cette librairie propose une API avec des fonctions du type SetAttribute (handle, attribute_id, ...) et GetAttribute (handle, attribute_id, ...). Je suohaiterais faire la même chose en C++ en utilisant des fonctions membres template du style :
template <class t> Attriblue (attribute_id) const; // fonction de lecture
et template <class t> void Attriblue (attribute_id, const t); // fonction de d'écriture
le code que j'utilise est avec VC6 est le suivant
#define ATTR_INT 0
#define ATTR_CHAR 1
class CAttr
{
private:
int Int;
char Char;
public:
CAttr (void) {Int = 0; Char = 0; return;};
~CAttr (void) {return;};
int IntValue (void) const {return Int;};
void IntValue (const int NewInt) {Int = NewInt;};
char CharValue (void) const {return Char;};
void CharValue (const char NewChar) {Char = NewChar;};
template <class t> t AttrValue (const int AttrId) const
{
t RetValue;
switch (AttrId)
{
case ATTR_INT:
RetValue = IntValue ();
break;
case ATTR_CHAR:
RetValue = CharValue ();
break;
}
return RetValue;
};
template <class t> void AttrValue (const int AttrId, const t NewAttrValue)
{
switch (AttrId)
{
case ATTR_INT:
IntValue (NewAttrValue);
break;
case ATTR_CHAR:
CharValue (NewAttrValue);
break;
}
return;
};
};
void main (void)
{
CAttr OAttr;
int Int = 0;
int Char = 0;
OAttr.IntValue (3);
OAttr.CharValue (-2);
Char = OAttr.AttrValue<char> (ATTR_CHAR);
}
Visual me jette sur la dernière ligne du code : "error C2062: type 'char' unexpected"
j'ai essayer pleins de plusieurs methode rien ne passe. Avez-vous une idée ?
Partager