Does what you currently have compile? I would have assumed that it doesnt, since array declaration requires a constant expression, and fwMapLen seems to be an ordinary variable.
The reason for needing a constant expression is that the fw2on array will be declared on the stack, and its size must be known beforehand.
So basically what you will need to do is allocate space for your array on the heap;
Code:
int *fw2on = new int[fwMapLen];
Deallocate arrays by using delete[]:
Code:
delete[] fw2on;
But allocation is relatively expensive, so if performance is of any concern, you would be better of allocation as much space as you will ever happen to need for fw2on once and then never re-allocate. (IF you happen to know the maximum value that fwMapLen can take on).

Depending on what you are doing with the fw2on array later on, the std::vector<int> class could be a good alternative too. It behaves very similarly to the List<T> in .NET, holding an internal array that it expands fairly efficiently when needed.