Étant donné cette structure :
struct Foo {
std::array<int, 8> bar;
};
Comment puis-je obtenir le nombre d'éléments du fichier bar
si je n'ai pas d'instance de Foo
?
Étant donné cette structure :
struct Foo {
std::array<int, 8> bar;
};
Comment puis-je obtenir le nombre d'éléments du fichier bar
si je n'ai pas d'instance de Foo
?
Vous pouvez utiliser std::tuple_size
:
std::tuple_size<decltype(Foo::bar)>::value
Malgré la bonne réponse de @Jarod42, voici une autre solution possible basée sur decltype
qui n'utilise pas tuple_size
.
Il suit un exemple minimal et fonctionnel qui fonctionne en C++11 :
#include<array>
struct Foo {
std::array<int, 8> bar;
};
int main() {
constexpr std::size_t N = decltype(Foo::bar){}.size();
static_assert(N == 8, "!");
}
std::array
possède déjà une fonction membre constexpr nommée size
qui renvoie la valeur recherchée.
Vous pourriez donner Foo
a public static constexpr
membre.
struct Foo {
static constexpr std::size_t bar_size = 8;
std::array<int, bar_size> bar;
}
Vous connaissez maintenant la taille de la barre de Foo::bar_size
et vous avez la possibilité de nommer bar_size
à quelque chose de plus descriptif si Foo
a toujours plusieurs tableaux de la même taille.
Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.