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

Popular posts from this blog

Delphi XE2 Indy10 udp client-server interchange using SendBuffer-ReceiveBuffer -

Qt ActiveX WMI QAxBase::dynamicCallHelper: ItemIndex(int): No such property in -

Enable autocomplete or intellisense in Atom editor for PHP -