shared_ptr Boost : prob affectation
Voilà je commence à m'intéresser un peu aux pointeurs intelligents de boost, enfin shared_ptr. Mais je rencontre un petit problème (avec SDL).
J'ai un structure comme celle-ci (merci fearyourself ^^) :
Code:
1 2 3 4 5 6 7
| // Structure contenant toutes les variables globales
typedef struct VARGlobales
{
SDL_Surface * pEcran; // Pointeur vers la fenêtre d'affichage
boost::shared_ptr <SDL_Surface> pBitmapCB; // Pointeur intelligent
SDL_Event event;
} VARGlobales; |
Premièrement quand je fais
VARGlobales sParam = {NULL, NULL}; j'ai un message d'erreur alors que j'en ait pas lorsque je cherche qu'à initialiser à NULL le premier pointeur.
Puis un peu plus loin, j'utilise un autre shared_ptr :
Code:
1 2
| // Pointeur intelligent vers un objet FenetrageSDL
boost::shared_ptr <FenetrageSDL> pFenetre (new FenetrageSDL (800, 600, 32)); |
De cette façon, pas de problème pour initialiser, toutefois, dès que je veux initialiser le shared_ptr de ma structure :
Code:
sParam.pBitmapCB = SDL_LoadBMP ("cb.bmp"); (la fonction SDL_LoadBMP renvoie un pointeur vers un SDL_Surface, ça devrait marcher :/).
Ben j'ai un message d'erreur.
Visiblement les shared_ptr n'accepte pas l'initialisation via le =. Et d'après l'opérateur surchargé =, il ne semble prendre que des shared_ptr comme valeur à droite (shared_ptr & operator=(shared_ptr const & r) // never throws).
Bref comment faire pour initialiser un pointeur intelligent avec = ? Est-il possible de surcharger son propre = ?
Et d'autre part, est-ce que les pointeurs intelligents sont lourds à utiliser (je ne parle pas au niveau de la clarté du code, de toute façon j'aime pas les typedef, je trouve ça plus clair quand je vois directement boost::shared_ptr), mais je veux parler en terme de performance ?
Mirci :aie:
:tagcode: