Bonjour,
j'ai un petit souci avec certaines fonctions membres d'une classe spécialisée. J'ai défini une classe Vector pour manipuler des vecteurs :
Cette fonction admet pour paramètre une structure "storage" précisant le format de stockage de ses coefficients et une "precision" (int, float, double, ...). Pour le stockage, j'ai par exemple une structure dense :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 template<template<typename T>class storage,typename precision> Vector : storage<precision> {};
En fonction du format de stockage, je n'ai pas exactement les mêmes fonctions membres pour la classe Vector et je procède par spécialisation pour contourner ce problème. Dans le cas dense, j'ai :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 template<typename precision> struct dense { size_t size_; precision* val_; };
Dans cet exemple, le constructeur par copie et la fonction sum compilent bien mais pas la fonction abs. Le compilateur me jette en me disant qu'il a un problème avec la structure dense qui n'est pas conforme avec la façon dont est défini le paramètre storage dans la déclaration générale de Vector (la toute première). Seulement, je ne comprends pas pourquoi et je n'arrive pas à corriger le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 template<typename precision> class Vector<dense,precision> : dense<precision> { public: Vector(Vector<dense,precision> const&); public: precision const sum() const; Vector<dense,precision> abs() const; };
Est-ce que quelqu'un aurait une idée?
Merci pour votre aide.
Partager