c++ - How do I instantiate an array's size later? -
let's have base class called
class base { public: std::string array[]; }; the size string array not decided until class extends it, what's correct syntax doing so?
eg, later on in derived class
derived::derived() { array[] = new array[40]; }
if want use c-style array, size must fixed , known @ compile-time. , in case, use safer, zero-overhead std::array<> wrapper instead.
if size of container not known @ compile-time, practice use std::vector (or std::deque in cases, based on requirements in terms of memory allocation) , avoid manual memory management through raw pointers, new[] , delete[]:
#include <string> // std::string #include <vector> // std::vector class base { public: std::vector<std::string> myvector; }; besides, design won't require dedicated work in constructor (and destructor) of derived. if done derived's default constructor allocate array, can avoid explicitly defining default constructor @ all, , let compiler generate 1 implicitly - same story destructor.
also, discourage using names of standard container classes (like array) names variables. myarray (or myvector, in example above) more appropriate choices.
Comments
Post a Comment