I've some problems to declare a static member of type `std::vector<std::string>`, in principle I can replace it with an array `std::string[]`.

I've a lot of troubles: if I declare it as `static` and then I initialize in the implementation (cpp file) it works but if I want to create a new class inheriting from the first in a second file it complains about

```
error: invalid application of ‘sizeof’ to incomplete type ‘std::string []’

```

If I decalre it in the header I've problems with double declarations.

What's the proper way? Do I have to use extern? How?

I've:

file\_A.h:

```
class A { public: static string s[]; }

```

file\_A.cpp:

```
string A::s[] = { ... };

```

file\_B.h

```
class B : public A

```

file\_B.cpp

```
void B::function()
{
for (string* s = A::s; s != A::s + sizeof(A::s) / sizeof(string); ++s)
}

```