Je modifie un code existant dans un projet. J'ai un Param modèle de classe et une classe de modèle spécialisé partielle pour les paramètres dans un fichier d'en-tête comme ci-dessous:Le pointeur vers un type de classe incomplet n'est pas autorisé dans une classe de modèles partielle
template<class ValueType>
struct Param
{
static void add(ParameterCode code, ValueType value, ParameterAttributes attributes)
{
}
static PreSetResultType preSetActions(ParameterCode code, ValueType& value)
{
return (SUCCESS);
}
static void set(ParameterCode code, ValueType value)
{
}
static ValueType get(ParameterCode code)
{
ValueType value = ValueType();
return (value);
}
static void serialize(ParameterCode code, vector<uint8_t>& byteArray)
{
}
static ValueType deserialize(const vector<uint8_t>& byteArray)
{
return (*reinterpret_cast<const ValueType*>(byteArray.begin()));
}
};
/* template function specialization for pointer types */
template<class ValueType>
struct Param<ValueType*>
{
static void add(ParameterCode code, ValueType* value, ParameterAttributes attributes)
{
}
static PreSetResultType preSetActions(ParameterCode code, ValueType*& config)
{
return (SUCCESS);
}
static void set(ParameterCode code, ValueType* pObjNew)
{
pObjNew->serialize(serializedObject); //error line 54
}
static ValueType* get(ParameterCode code)
{
void* value = NULL;
return ((ValueType*)value);
}
static void serialize(ParameterCode code, vector<uint8_t>& byteArray)
{
ValueType* obj = get(code);
obj->serialize(byteArray); //error line 60
}
static ValueType* deserialize(const vector<uint8_t>& byteArray)
{
return (ValueType::deserialize(byteArray)); //error line 65
}
};
dans la spécialisation de la classe de modèle que je reçois ce message d'erreur: « type incomplet n'est pas autorisé Parameters.h "à la ligne: 65 " pointeur vers le type de classe incomplet n'est pas autorisé Paramètres.h "à la ligne: 54 et 60
Je sais que la spécialisation de la classe de modèle a un type incomplet mais le compilateur devrait le résoudre au moment de la compilation ou ai-je besoin d'une sorte de déclaration avancée? Les deux classes sont dans le même fichier .h. Seul le code correspondant est copié ici. Merci pour votre aide.
quelles lignes sont 54,60 et 65? Qu'avez-vous modifié? Cela fonctionnait-il avant? – user463035818
Le code fonctionnait avant et je viens de supprimer l'inclusion de certains fichiers d'en-tête qui n'étaient pas nécessaires pour mon projet. Les lignes ont été mentionnées maintenant dans le code. – masterop
avant qu'il ne fonctionne, vous avez supprimé certains inclut, maintenant il ne fonctionne pas. Pourquoi pensez-vous toujours que ces inclusions ne sont pas nécessaires? – user463035818