Cette question concerne la publication here. Est-il possible d'initialiser un tableau dans un appel de fonction ou un appel de constructeur? Par exemple, le constructeur de classe foo veut un tableau de taille 3, donc je veux appeler foo ({0, 0, 0}). J'ai essayé cela, et ça ne marche pas. J'aimerais pouvoir initialiser des objets de type foo dans les listes d'initialisation des constructeurs d'autres objets, ou initialiser foo's sans d'abord créer un tableau séparé. Est-ce possible?Initialisation de matrice C++ dans un appel de fonction ou un appel de constructeur
Répondre
Non conforme à la norme actuelle. Il sera possible en C de 11
En gcc, vous pouvez utiliser un casting pour forcer la création d'un temporel, mais il est pas standard C++ (C99):
typedef int array[2];
void foo(array) {} // Note: the actual signature is: void foo(int *)
int main() {
foo((array){ 1, 2 } );
}
Cela fonctionne dans C99, mais pas dans C++ 03 (ni dans C++ 0x - c'est un littéral composé). –
Le code est OK avec (macports) gcc jusqu'à 4.6; gcc 4.7 signale 'erreur: prendre l'adresse du tableau temporaire'. –
C++ 11 est la norme actuelle, cette réponse doit donc être mise à jour. –
Si elle est autorisée par votre conception , vous pouvez envisager d'encapsuler les données à l'intérieur d'une classe et par défaut initialiser le constructeur avec 0 (ou n'importe quelle valeur de votre choix)
- 1. Appel de fonction/constructeur ambigu en C++
- 2. C++: Appel de la fonction dérivée du constructeur de base?
- 3. Construire un appel de fonction en C
- 4. Appel fonction C++ de C#
- 5. Appel de constructeur ambigu
- 6. Appel du constructeur en tant que fonction dans C#
- 7. C appel de fonction ++ question
- 8. Animations jQuery dans un appel de fonction
- 9. appel constructeur de base en C#
- 10. initialisation de la matrice C++
- 11. Appel de fonction minuté
- 12. Appel d'un constructeur
- 13. Appel Java de Scala: constructeur protégé
- 14. Comment passer un argument dans un appel de fonction?
- 15. Déroulant un ... tableau args dans un appel de fonction
- 16. Appel d'une fonction C dans un fichier pro * C
- 17. Appel de fonction virtuelle C++ versus boost :: appel de fonction speedwise
- 18. C++ destructor et appel de fonction pour
- 19. initialisation de matrice
- 20. appel constructeur de la classe de base
- 21. Quelle est la signification de "()" dans un appel de fonction?
- 22. Ajax appel de fonction
- 23. C++: Appel de fonction virtuelle dynamique
- 24. Appel de fonction d'imbrication
- 25. Appel d'un F # Fonction en VB (ou C# ou autre)
- 26. appel C comme rappel dans un fil
- 27. TRACE appel de la fonction système C++
- 28. Trier un tableau avec un appel de fonction récursif?
- 29. Une façon d'éviter un appel virtuel dans le constructeur
- 30. Appel Py_Finalize() de C
D'abord vous parlez d'initialisation de tableau, alors vous devez soudainement initialiser un objet de classe. Alors, que devez-vous initialiser: un objet tableau ou un objet classe? – AnT
L'initialisation d'une classe est un cas spécifique que j'ai utilisé comme exemple, et c'est la raison pour laquelle j'ai posé la question. Cependant, vous pourriez aussi avoir une fonction foo qui prend un tableau de taille 3 et que vous voulez appeler: foo ({0, 0, 0}). J'ai changé le PO pour le rendre plus évident. – david
Oui, mais vous demandez toujours "Est-il possible d'initialiser un tableau sans l'assigner?". Eh bien, oui, c'est possible. Par exemple, 'int a [10] = {5}' initialise un tableau sans l'affecter, comme vous l'avez demandé. Pourtant, cela ne ressemble pas à ce qui vous intéresse vraiment. – AnT