Hello,
Je veux dans une de mes classes déclarer et utiliser une classe issue d'une API.
Une donnée membre est une instance de cette classe, et une fonction membre est une fonction get() pour accéder à cette donnée membre.
Voici donc ma classe :
Visual C++ me sort alors l'erreur de compilation suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 class A { public: ... B objetB; B* getObjetB(); void une_fonction(); }; void A::une_fonction() { objetB.methode(); }
error C2228: la partie gauche de 'methode' doit avoir un class/struct/union
Si je déclare objetB comme statique, je n'ai pas d'erreur de compilation (pourquoi, d'ailleurs ?), mais une erreur de liaison :
error LNK2001: symbole externe non résolu "public: static class B A::objetB"
En revanche, si je déclare objetB en tant que variable globale (et non comme une composition), cela fonctionne.
Ma connaissance du mot-clé static est peut-être limitée.
Pour moi, cela signifie dans le cas d'une donnée membre que sa valeur est commune est commune à toute les instances (et non dupliquée), et accessible sans instanciation, et pour une fonction membre (également accessible sans instanciation), qu'elle ne peut utiliser que des données membres statiques.
Mais peut-être ai-je loupé quelque chose...
Merci.
Partager