During run-time we find the model of our embedded product. Depending of the model, we use one of above arrays. This array will be used by two different tasks. I don't want to check the running model and use the associated array everytime the array is needed.

I would like to get the product model, and assign array to some pointer variable and use that pointer variable whenever I need to access the array.

Why not just use a std::vector, set it's size once at runtime and that just pass it around by reference? There are many advantages of using a vector, least of which you can actually get it's size in a function it is passed to. You can't do this with a static array as they always decompose to pointers. Having multiple static arrays is wasteful and will artificially increase the size of your binary; you'll pay a cost for the one's you are not using! If I were reviewing this code as part of a peer review I would reject it as it stands.

the above concept also would allow to have common (shared) parts of parameters handled in the base class and individual parts handled in the derived class.

note, definition arrays which have hundreds of elements normally is not so good a design. you might consider to load such data from a database or a resource file rather to define them in source code. if you do so, you easily could handle it with one class again and would use a dynamic container like a vector as evilrix has suggested.

I believe if it wasn't public, task wouldn't able to access member Info the Parameters class. Am I correct ?

>> ParameterDef * Info_Ptr ;
so after Info_Ptr is assigned one of arrays, then we use following notation to access array members ?
Info_Ptr [ 9 ], Info_Ptr [ 3 ], etc.

>> Why not just use a std::vector
I totally agree.
This code base always had single array 'info' in the Parameters class. My job is to expand ito to Three arrays. I argued that we will waste memory but they say we have plenty of memory in this embedded product. We are also schedule constraint. So, this needs to get done today.
Also, I have never used vectors in c++. We'll need to defer this essential improvment to the future.

>> you may derive from class Parameters and handle different static arrays by means of virtual functions:

Another great idea. Since code is setup for arrays already, decision has been made to continue using arrays. But in future I'll fight for a better container approach.

Unlike C#, C++ doesn't have native support for sealing classes (so they cannot be sub-classed). At the cost of a virtual base class pointer it is possible to implement a pseudo sealing mechanism
The trick is to virtually inherit from a base class…

Templates For Beginners
Or
How To Encourage The Compiler To Work For You
Introduction
This tutorial is targeted at the reader who is, perhaps, familiar with the basics of C++ but would prefer a little slower introduction to the more ad…

The goal of the video will be to teach the user the concept of local variables and scope. An example of a locally defined variable will be given as well as an explanation of what scope is in C++. The local variable and concept of scope will be relat…