Question

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

Was it helpful?

Solution

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);
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top