La définition volatile objet de classe
Pouvez le volatile être utilisé pour les objets de la classe?
Comme:
volatile Myclass className;
Le problème est qu'il ne compile pas,
partout où certains de la méthode est invoquée, le message d'erreur indique:
erreur C2662: 'fonction' : impossible de convertir de 'cette' pointeur 'volatile MyClass' à 'Maclasse &"
Quel est le problème et comment le résoudre?
EDIT:
class Queue {
private:
struct Data *data;
int amount;
int size;
public:
Queue ();
~Queue ();
bool volatile push(struct Data element);
bool volatile pop(struct Data *element);
void volatile cleanUp();
};
.....
volatile Queue dataIn;
.....
EnterCriticalSection(&CriticalSection);
dataIn.push(element);
LeaveCriticalSection(&CriticalSection);
- Notez qu'en C++,
volatile
ne garantit pas thread-safety. C'est différent de, par exemple, .NET, où il n'.
Vous devez vous connecter pour publier un commentaire.
Oui, vous pouvez, mais vous ne pouvez appeler des fonctions de membre qui sont déclarées
volatile
(tout comme leconst
mot-clé). Par exemple:Modifier en fonction de votre code:
déclare un non-
volatile
membre de la fonction qui retourne unbool volatile
(=volatile bool
). Vous souhaitezvolatile
(ouconst
), et les variables de membre héritent de ces propriétés de l'instance de classe. Concernant vos messages d'erreur, merci de poster le code exact que vous utilisez.Je crois qu'il voulait dire
au lieu de
Aussi jeter un oeil ici http://www.devx.com/tips/Tip/13671
En C++ de la grammaire, "volatile" et "const" sont appelés "CV modificateurs". Que signifie "volatile" fonctionne exactement de la même manière que "const" de l'syntaxique point de vue.
Vous pouvez remplacer tous les "volatile" avec "const", alors vous pouvez comprendre pourquoi votre code compile ou pas.
Yep. Nous pouvons utiliser. Veuillez voir le code modifié.
J'espère qu'il devrait maintenant fonctionner.