c++ - Initialize a Struct containing a const array with initializer list -
i working c++11 , have class containing following struct:
struct settings{ const std::string name; const std::string* a; const size_t a; }; class x { static const settings s; //more stuff }; in .cpp file want define this
x::s = {"myname", {"one","two","three"}, 3}; but not work. work using intermediate variable
const std::string inter[] = {"one","two","three"}; x::s = {"myname", inter, 3}; is there way without intermediate variable?
a pointer cannot initialized list of values. use std::vector instead:
#include <vector> struct settings{ const std::string name; const std::vector<std::string> a; // ^^^^^^^^^^^^^^^^^^^^^^^^ const size_t a; }; you can write:
class x { static const settings s; //more stuff }; const settings x::s = {"myname", {"one","two","three"}, 3}; here live example.
as suggested praetorian in comments, may want replace std::vector std::array, if acceptable specify size of container explicitly, , if size not need change @ run-time:
#include <array> struct settings{ const std::string name; const std::array<std::string, 3> a; // ^^^^^^^^^^^^^^^^^^^^^^^^^^ const size_t a; }; and here live example.
Comments
Post a Comment