C++ data member initializer is not allowed
arrays, c++
Solution
You need to perform the initialization later; you cannot initialize class members within the class definition. (If you could, then classes defined in header files would cause each translation unit to define their own copy of the member, leaving the linker with a mess to sort out.)
class Class {
public:
static string arr[];
};
string Class::arr[3] = {"one", "two", "three"};
The class definition defines the interface, which is separate from the implementation.
Problem
I totally new to C++ so bear with me. I want to make a class with a static array, and access to this array from the main. Here is what i want to do in C#. ``` namespace ConsoleApplication1 { class Program { static void Main(string[] args) { Class a = new Class(); Console.WriteLine(a.arr[1]); } } } ===================== namespace ConsoleApplication1 { class Class { public static string[] s_strHands = new string[]{"one","two","three"}; } } ``` Here is what i have tried: ``` // justfoolin.cpp : Defines the entry point for the console application. // #include "stdafx.h" #include <string> #include <iostream> using namespace std; class Class { public: static string arr[3] = {"one", "two", "three"}; }; int _tmain(int argc, _TCHAR* argv[]) { Class x; cout << x.arr[2] << endl; return 0; } ``` But i got: IntelliSense: data member initializer is not allowed