Arduino/C++: initialize static array of objects outside of class constructor
<p>My goal is to track an array of Plugin objects whenever a plugin is created:</p>

<p>plugin.h</p>

<pre><code>#ifndef PLUGIN_H
#define PLUGIN_H

class Plugin {
public:
  static byte instances;
  static Plugin plugins[];

  Plugin();
  ~Plugin();
};

#endif
</code></pre>

<p>plugin.cpp</p>

<pre><code>#include &lt;Arduino.h&gt;
#include "plugin.h"

#define MAX_PLUGINS 3

byte Plugin::instances = 0;
Plugin Plugin::plugins[MAX_PLUGINS];

Plugin::Plugin() {
  Plugin::plugins[Plugin::instances++] = *this;
}

Plugin::~Plugin(){
}
</code></pre>

<p>What I've noticed is that </p>

<pre><code>Plugin Plugin::plugins[MAX_PLUGINS];
</code></pre>

<p>Already seems to call the plugin constructor which is not what I want as derived Plugins will only be created later in the program. Same happens if I try to create a empty list:</p>

<pre><code>Plugin Plugin::plugins[MAX_PLUGINS] = {};
</code></pre>

<p>How can I create a NULL-initialized array of objects of pre-defined but variable length?</p>

<p>Note: I've read <a href="https://stackoverflow.com/questions/23290873/array-of-objects-with-constructor">Array of objects with constructor</a> but I'm not sure that's possible in the AVR GCC chain?</p>