Reputation: 35
I have this structure:
struct casilla{
int x,y;
};
And these lines of code;
std::vector<std::vector<std::vector<casilla> > > iniciales;
iniciales.resize(7);
Wich give me this error in the g++ compiler:
src/tetromino.cpp:5:1: error: unknown type name 'iniciales'
iniciales.resize(7);
^
src/tetromino.cpp:5:10: error: expected unqualified-id
iniciales.resize(7);
Edit: I modified my code and now it's like this:
std::vector<std::vector<std::vector<casilla> > > iniciales(7);
for(int i=0; i<iniciales.size();i++){
iniciales[i].resize(3);
for(int i=0; i<3;i++)
iniciales[i][j].resize(4);
}
iniciales.at(TTR_CUADRADO){{{0,5},{0,6},{1,5},{1,6}}};
iniciales.at(TTR_LREVES)={{ {0,4},{0,5},{0,6},{1,6} },
{{-1,5},{0,5},{1,5},{1,4}},
{{0,4},{1,4},{1,5},{1,6}},
{{-1,5},{-1,6},{0,5},{1,5}}
};
iniciales.at(TTR_L)={{{0,4}{0,5},{0,6},{1,4}},{{-1,5},{0,5},{1,5},{1,6}},
{{0,4},{0,5},{0,6},{-1,6}},{{-1,4},{-1,5},{0,5},{1,5}}};
iniciales.at(TTR_Z)={{{0,5},{0,6},{1,6},{1,7}},{{0,6},{1,6},{0,7},{-1,7},}};
iniciales.at(TTR_ZREVES)={{{0,6},{0,7},{1,5},{1,6}},{{0,6},{0,7},{-1,6},{1,7}}};
iniciales.at(TTR_I)={{{0,4},{0,5},{0,6},{0,7}},{{-2,6},{-1,6},{0,6},{1,6}}};
iniciales.at(TTR_T)={{{0,5},{0,6},{0,7},{1,6}}}
for(int i=0; i<iniciales.size();i++){
for(int i=0; i<3;i++)
iniciales[i][j].shrink_to_fit();
}
}
All the TTR* variables are enumerated values between 0 and 6.
This is when the party starts:
c++ -Wall -g -Iinclude -c src/tetromino.cpp -o obj/tetromino.o
src/tetromino.cpp:5:1: error: expected unqualified-id
for(int i=0; i<iniciales.size();i++){
^
src/tetromino.cpp:10:2: error: unknown type name 'iniciales'
iniciales.at(TTR_CUADRADO){{{0,5},{0,6},{1,5},{1,6}}};
^
src/tetromino.cpp:10:11: error: expected unqualified-id
iniciales.at(TTR_CUADRADO){{{0,5},{0,6},{1,5},{1,6}}};
^
src/tetromino.cpp:11:1: error: unknown type name 'iniciales'
iniciales.at(TTR_LREVES)={{ {0,4},{0,5},{0,6},{1,6} },
^
src/tetromino.cpp:11:10: error: expected unqualified-id
iniciales.at(TTR_LREVES)={{ {0,4},{0,5},{0,6},{1,6} },
^
src/tetromino.cpp:16:1: error: unknown type name 'iniciales'
iniciales.at(TTR_L)={{{0,4}{0,5},{0,6},{1,4}},{{-1,5},{0,5},{1,5},{1,6}},
^
src/tetromino.cpp:16:10: error: expected unqualified-id
iniciales.at(TTR_L)={{{0,4}{0,5},{0,6},{1,4}},{{-1,5},{0,5},{1,5},{1,6}},
^
src/tetromino.cpp:18:1: error: unknown type name 'iniciales'
iniciales.at(TTR_Z)={{{0,5},{0,6},{1,6},{1,7}},{{0,6},{1,6},{0,7},{-1,7},}};
^
src/tetromino.cpp:18:10: error: expected unqualified-id
iniciales.at(TTR_Z)={{{0,5},{0,6},{1,6},{1,7}},{{0,6},{1,6},{0,7},{-1,7},}};
^
src/tetromino.cpp:19:1: error: unknown type name 'iniciales'
iniciales.at(TTR_ZREVES)={{{0,6},{0,7},{1,5},{1,6}},{{0,6},{0,7},{-1,6},{1,7}}};
^
src/tetromino.cpp:19:10: error: expected unqualified-id
iniciales.at(TTR_ZREVES)={{{0,6},{0,7},{1,5},{1,6}},{{0,6},{0,7},{-1,6},{1,7}}};
^
src/tetromino.cpp:20:1: error: unknown type name 'iniciales'
iniciales.at(TTR_I)={{{0,4},{0,5},{0,6},{0,7}},{{-2,6},{-1,6},{0,6},{1,6}}};
^
src/tetromino.cpp:20:10: error: expected unqualified-id
iniciales.at(TTR_I)={{{0,4},{0,5},{0,6},{0,7}},{{-2,6},{-1,6},{0,6},{1,6}}};
^
src/tetromino.cpp:21:1: error: unknown type name 'iniciales'
iniciales.at(TTR_T)={{{0,5},{0,6},{0,7},{1,6}}}
^
src/tetromino.cpp:21:10: error: expected unqualified-id
iniciales.at(TTR_T)={{{0,5},{0,6},{0,7},{1,6}}}
^
src/tetromino.cpp:22:1: error: expected unqualified-id
for(int i=0; i<iniciales.size();i++){
^
src/tetromino.cpp:26:1: error: extraneous closing brace ('}')
}
^
src/tetromino.cpp:27:1: error: no template named 'vector'; did you mean
'std::vector'?
vector<casilla> tetromino::Zonstd::aComun(vector<casillstd::a> v1,...
^~~~~~
std::vector
/usr/include/c++/4.2.1/bits/stl_vector.h:162:11: note: 'std::vector' declared
here
class vector : protected _Vector_base<_Tp, _Alloc>
^
src/tetromino.cpp:27:28: error: no member named 'Zonstd' in 'tetromino'
vector<casilla> tetromino::Zonstd::aComun(vector<casillstd::a> v1,...
~~~~~~~~~~~^
fatal error: too many errors emitted, stopping now [-ferror-limit=]
What should I do?
As @Jack is saying, i think it could be because I'm doind it outside any method. Should i make an specific method to set this global variable. Also I prefer to make a global variable rather than creating one each time I call a function.
PS.:Sorry for the "weird" variable names, I'm programming in Spanish. :P
Upvotes: 2
Views: 4065
Reputation: 133587
My guess is that you are trying to execute some code outside of a method, eg:
#include <vector>
std::vector<std::vector<std::vector<casilla> > > iniciales;
iniciales.resize(7);
while it should be
#include <vector>
std::vector<std::vector<std::vector<casilla> > > iniciales;
void someMethod() {
iniciales.resize(7);
}
or, even better:
std::vector<std::vector<std::vector<casilla> > > iniciales(7);
Upvotes: 7