Let's say I have following C++ class
template<uint32_t NUM_OF_POINTS>
class A
{
public:
struct Point {
float x;
float y;
};
// here I don't know how to pass the initializers for the private member
A();
private:
Point table[NUM_OF_POINTS];
};
J'ai cherché un moyen de transmettre les initialiseurs du membre table
via le constructeur, c'est-à-dire que j'aimerais pouvoir le faire:
A<4> a({{0.0, 0.0}, {1.0, 1.0}, {2.0, 2.0}, {3.0, 3.0}});
Est-ce toujours possible en C++, par exemple via les modèles variadiques ?
Solution du problème
Est-ce possible en C++?
L'une des alternatives consiste à prendre un paramètre de type Point (&&)[NUM_OF_POINTS]
puis à utiliser std::copy
pour copier la valeur dans la variable membre
A(Point (&&arr)[NUM_OF_POINTS]) {
std::copy(arr, arr + NUM_OF_POINTS, table);
}
Démo
Aucun commentaire:
Enregistrer un commentaire