La volatilité peut-elle être utilisée pour des objets de classe?
Comme: Le problème est qu'il ne compile pas,
Partout où une méthode est invoquée, l'erreur dit:
Erreur C2662: 'Fonction': Impossible de convertir 'Ce "pointeur de" MyClass volatile "sur" MyClass & " P> Quel est le problème ici et comment le résoudre? p> EDIT: p>
4 Réponses :
Oui, vous pouvez, mais vous ne pouvez ensuite appeler que des fonctions membres déclarées volatiles code> (comme le mot clé
const code> ". Par exemple:
bool push(struct Data element) volatile;
Qu'en est-il des constructeurs et destructeurs et variables (propriétés) déclarés en classe?
@maximus, constructeurs et destructeurs ne peuvent pas être surchargés avec volatile code> (ou
const code>) et les variables de membre héritent de ces propriétés de l'instance de classe. En ce qui concerne vos messages d'erreur, veuillez publier le code exact que vous utilisez.
Merci beaucoup! Maintenant tout va bien!
Je pense qu'il voulait dire au lieu de p> a aussi un look ici http://www.devx.com/tips/tip/13671 p> p>
dans la grammaire C ++, "volatile" et "const" sont appelés "modificateurs de CV". Cela signifie que "volatile" fonctionne exactement de la même manière que "const" du point de vue syntaxique. Vous pouvez remplacer tous les "volatiles" par "Const", puis vous pouvez comprendre pourquoi votre code compile ou non. P>
Yep. On peut utiliser. S'il vous plaît voir le code modifié. J'espère que cela devrait fonctionner maintenant.
class Queue { private: struct Data *data; int amount; int size; public: Queue (); ~Queue (); bool push(struct Data element) volatile; bool pop(struct Data *element) volatile; void cleanUp() volatile; }; ..... volatile Queue dataIn; ..... EnterCriticalSection(&CriticalSection); dataIn.push(element); LeaveCriticalSection(&CriticalSection);
Notez qu'en C ++,
volatile code> ne garantit pas la sécurité de thread-sécurité. C'est différent de, par exemple, .NET, où il fait.