9
votes

Est-il autorisé à attribuer à un (* ceci) déréférencé?

Je suis actuellement rafraîchissant mes compétences en C ++ et je me demandais s'il est possible d'attribuer quelque chose à * ce code>. Je sais avoir affecté à ce code> est interdit, mais je ne trouve pas la même information pour mon cas.

Exemple: P>

class Foo {
  int x;
public:
  Foo(int x) : x(x) {}
  Foo incr() { return Foo(x+1); }
  void incr_() { (*this) = incr(); }
};

c++

0 commentaires

4 Réponses :


2
votes

void augmenter () {retour foo (x + 1); }

Ceci est invalide. Vous ne pouvez pas retourner un objet foo à partir d'une fonction ayant void type de retour. xxx

C'est bien.


5 commentaires

Cela aurait été plus adapté comme un commentaire que comme une réponse, imo.


@Etienne: Lemme complète ma réponse en premier. :)


Vous avez totalement raison, mais j'ai simplement commis une erreur là-bas. Je voulais dire la fonction d'être foo aug () .


Ok, maintenant que la réponse de la mémoire de la mémoire a suffisamment de bowvotes pour que je sois sûr, merci beaucoup!


Vous pouvez modifier le commentaire NO au début maintenant, puisqu'il a changé la question



4
votes

Oui, cela est autorisé, et cela invoque en fait votre opérateur d'affectation de classe.


0 commentaires

0
votes

Oui, vous pouvez, si * Cette Valeur de retour est d'un type de données contenant un opérateur d'affectation défini.


0 commentaires

1
votes

Oui, ça marche. Et * this = x est juste sucre syntaxique pour opérateur = (x) . .


0 commentaires