I got this problem when trying to initialize global c++ matrix(2D array) inside a function:
here is what I’m doing
#include <iostream>
#include <math.h>
#include <Windows.h>
using namespace std;
float matrix[5][5];
void setIR(){
matrix[5][5]= {
{ 17.2, 22.75, 2.5, -9.15, 0.2},
{ 22.75, 145.5, 9.25, 20.75, 5.25 },
{ 2.5, 9.25, 76.5, -15.5, -6.0 },
{ -9.15, 20.75, -15.5, 37.3, -25.65 },
{ 0.2, 5.25, -6.0, -25.65, 41.2 }
};
int main(){
//rest of the code
......
}
I’m getting only bunch of
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(46): error C2059: syntax error : '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(46): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(47): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(47): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(48): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(48): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(48): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(49): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(49): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(49): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(50): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(50): error C2143: syntax error : missing ';' before '}'
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(50): error C2143: syntax error : missing ';' before ','
1>c:\users\apple\documents\visual studio 2010\projects\jcb\jcb\jcbPIO.cpp(51): error C2143: syntax error : missing ';' before '{'
1>c:\users\apple\documents\visual studio2010\projects\jcb\jcb\jcbPIO.cpp(51): error C2143: syntax error : missing ';' before '}'
I’m doing something wrong or C++ limitation ?
This “list assignment” syntax only works for initialization (that is, at the place where you define the variable), not for assignment. What your assignment statement tries to do is to assign to the single element
matrix[5][5](which doesn’t actually exist) a values given by the curly braces list, which isn’t a valid syntax for a value.You can assign the matrix as follows:
Of course, given that your values are constants anyway, the best solution is to just give them in the definition of
matrixitself. That also saves the time to copy all the data.