Static member variables need to be made public. The way you currently have it setup implicitly makes the struct private. I ran a few tests and what ASH says is correct you have to instantiate the structure in the global scope but you can't do that with a private member. Personally, I get the scoping error:
'configuration' is a private member of 'Someclass'
Only after I make the struct public: did it compile without error.
#include <iostream>
class Someclass
{
public:
static struct info
{
int a;
int b;
int c;
info() : a(0), b(0), c(0){}
} configuration;
void captureCorners(int frame);
};
struct Someclass::info Someclass::configuration;
void Someclass::captureCorners(int frame)
{
configuration.c = frame;
}
int main ()
{
Someclass firstclass;
Someclass secondclass;
Someclass::configuration.a = 10;
firstclass.configuration.b = 8;
secondclass.configuration.c = 3;
using namespace std;
cout << "First Class a = " << firstclass.configuration.a << "\n";
cout << "First Class b = " << firstclass.configuration.b << "\n";
cout << "First Class c = " << firstclass.configuration.c << "\n";
cout << "Second Class a = " << secondclass.configuration.a << "\n";
cout << "Second Class b = " << secondclass.configuration.b << "\n";
cout << "Second Class c = " << secondclass.configuration.c << "\n";
cout << "Everyclass a = " << Someclass::configuration.a << "\n";
cout << "Everyclass b = " << Someclass::configuration.b << "\n";
cout << "Everyclass c = " << Someclass::configuration.c << "\n";
}