web-dev-qa-db-fra.com

Existe-t-il un équivalent du `pass` de Python en c ++ std11?

Je veux une déclaration qui ne fait rien mais qui peut être utilisée dans des endroits nécessitant une déclaration. Passez: http://docs.python.org/release/2.5.2/ref/pass.html

Edit: Je viens de voir: Comment peut-on exécuter un no-op en C/C++?

#define pass (void)0

Résolu mon problème. Merci!

18
Tommy

Le point-virgule ou des crochets vides devraient fonctionner pour vous

Par exemple, Python

while some_condition():    # presumably one that eventually turns false
    pass

Pourrait traduire en C++ suivant

while (/* some condition */)
    ;

Ou

while (/* some condition */) {}

Peut-être que pour le cas d'opérateur ternaire, vous pourriez faire:

x > y ? do_something() : true;
24
Prashant Kumar

Non, vous n'avez pas pass ou équivalent mot clé . Mais vous pouvez écrire un code équivalent sans ce mot clé.

def f():
   pass

devient

void f() {}

et 

 class C:
     pass

devient

 class C {};

Dans un contexte différent, une syntaxe différente pourrait être utile. Par exemple,

 class MyError(Exception):
        pass

devient

class MyError : public std::exception
{
      using std::exception::exception; //inherits constructor!
};

Comme vous pouvez le constater, dans ce contexte, vous devez écrire using pour hériter des constructeurs de la classe de base. En Python, pass fait la même chose, dans un contexte similaire.

J'espère que cela pourra aider.

6
Nawaz

Comme indiqué dans les commentaires, ceci n'est pas supporté car cela n'a aucun sens . L'opérateur conditionnel est conçu pour évaluer l'un des deux opérandes. Deux. Pas une.

Il n’est pas acceptable d’abuser de la part de l’opérateur afin de réaliser une action conditionnelle dans un seul de ces cas. En fait, il est préférable que ni l'un ni l'autre des opérandes n'engendrent d'effets secondaires. Ce n'est pas une construction "faire quelque chose", mais une construction "donnez-moi l'une des deux choses".

À cet égard, si Python prenait en charge ce que vous dites, alors il serait cassé où C++ ne le serait pas. En l'occurrence, Python ne le supporte pas non plus, après tout.

Ecrivez une déclaration if à la place:

if (x > y) {
   do_something();
}
else {
   /* Unimplemented at the moment */
}

Je pense qu'en C++, juste une ligne vide (;) sera l'équivalent de 'pass'

2
bboonn

Une approche pourrait être:



Fonctions: annule la fonction "proto" et utilise un ';' comme certains l'ont suggéré ci-dessus
Boucles: bien sûr utiliser la pause
Autre chose: d'après mon expérience, je laisserai une fonction ou une section de code commentée. Parfois, je vais aussi ajouter un petit résumé pour les éditions futures .
La façon dont vous abordez cette question devrait être axée sur ce qui est confortable. Faites ce que vous voulez qui fonctionne logiquement.

0
Brandon Williams