L'Argument le passage par référence au problème de pointeur

Chaque fois que j'essaie de compiler mon code j'obtiens l'erreur:

impossible de convertir le paramètre 1 de 'int *' int *&"

Il des tests du code ressemblant à ceci:

void set (int *&val){
   *val = 10;
}

int main(){
   int myVal;
   int *pMyVal = new int;
   set(&myVal); //<- this cause trouble
   set(pMyVal); //<- however this doesn't
}

Je voudrais appeler cette fonction dans seul coup, sans créer de pointeur quelque part pour seule raison pour la passer. Et comme les pointeurs n'ont pas de constructeur, quelque chose comme cela ne peut pas être fait. set(int*(&myVal)); . Est-il un autre moyen de passer le pointeur de référence sans avoir besoin de créer de variable temporaire?

Edit: d'ailleurs je sais pas pourquoi le code ne peut pas compiler (je suis juste de passage de l'adresse qui est peut-être de type int et non pas réelle pointeur). La question est de savoir comment d'autre peut-il être accompli.

Si vous ne voulez pas créer un pointeur, pourquoi avez-vous besoin de la fonction de prendre un pointeur (par référence)? Pourquoi ne pas set (int &v){v=10;}?
Parce que ma classe est de stocker de la valeur, mais cette valeur est ensuite passé en tant que pointeur vers une autre classe qui stocke ce pointeur. Ce pointeur doit être définie par référence à l'argument pointeur de fonction qui ne fait que ça, parce que sinon, le passé pointeur n'est pas vraiment de pointage de valeur, mais c'est de la copie. Et avant de fixer ce pointeur je ne veux pas créer temporaire pointeur juste pour être en mesure de passer.. C'est pourquoi je n'introduisent pas de problème réel, mais seulement ce qui ressemble à de la mon et il est plus facile.

OriginalL'auteur Raven | 2011-09-05