C++ 正确推送结构的二维向量(C+;+;)时出现问题

C++ 正确推送结构的二维向量(C+;+;)时出现问题,c++,vector,struct,multidimensional-array,C++,Vector,Struct,Multidimensional Array,我无法填充vector类型的向量。编译器似乎可以将vector推回到它上面,只要推回发生在与变量声明相同的函数中,但当变量在.h文件中声明并且推回在类的另一个函数中执行时,编译器不允许这样做 在下面的示例中,循环应该完全相同,除了一个调用push_返回在同一个函数中刚刚声明的向量,另一个调用push_返回在.h文件中声明的向量 工作原理示例(这来自主函数,但适用于任何函数): 矢量点击; 对于(int i=0;i

我无法填充
vector
类型的向量。编译器似乎可以将
vector
推回到它上面,只要推回发生在与变量声明相同的函数中,但当变量在.h文件中声明并且推回在类的另一个函数中执行时,编译器不允许这样做

在下面的示例中,循环应该完全相同,除了一个调用push_返回在同一个函数中刚刚声明的
向量
,另一个调用push_返回在.h文件中声明的向量

工作原理示例(这来自主函数,但适用于任何函数):

矢量点击;
对于(int i=0;i<10;i++){
矢量点击;
对于(int j=0;j<10;j++){
单击。向后推(可单击(点(50,50),5,10),“blar”);
}
点击。向后推(点击);
}
不起作用的示例:

Gui.h:

#include <vector>
//...
struct clickable {
    Rect rect;
    string msg;
    bool visible;
    clickable(Rect rectangle, string message){
            rect = rectangle;
            msg = message;
            visible = true;
    }
};
//...
class Gui{
  public:
    //...
    void load_environment();
    //...
  private:
    vector<vector<clickable> > ship;
    //...
}
#包括
//...
结构可点击{
Rect-Rect;
串味精;
布尔可见;
可单击(矩形、字符串消息){
矩形=矩形;
msg=消息;
可见=真实;
}
};
//...
Gui类{
公众:
//...
无效加载_环境();
//...
私人:
矢量船;
//...
}
Gui.cpp:

#include "Gui.h"
//...
void Gui::load_environment(){
    for(int i = 0; i < 10; i++){
            vector<clickable> click;
            for(int j = 0; j < 10; j++){
                    click.push_back(clickable(Rect(Point(50,50),5,10),
                                            "blar"));
            }
            ship.push_back(click);
    }
}
//...
#包括“Gui.h”
//...
void Gui::load_environment(){
对于(int i=0;i<10;i++){
矢量点击;
对于(int j=0;j<10;j++){
点击。向后推(可点击(点(50,50),5,10),
"废话";;
}
发货。向后推_(单击);
}
}
//...
我想这可能与我没有使一些操作符过载有关,但我实际上不知道这是否是问题的原因,或者如果是的话,我应该过载什么

编辑 以下是错误的文本:

Gui.cpp:47:错误:调用“std::vector::push_back(std::vector&)”时没有匹配的函数
/usr/lib/gcc/x86_64-redhat-linux/4.1.2/../../../../../../../../include/c++/4.1.2/bits/stl_vector.h:602:注:候选项为:void std::vector::push_back(const _Tp&)[with _Tp=std::vector,_Alloc=std::allocator]

错误消息实际上表明,它认为您试图将
推回的向量实际上是
向量,而不是您所期望的
向量


你可能只需要做一次干净的重建。

哇,我真是太蠢了。我传递了一个
向量
,也称为
ship
(我从粘贴的代码中省略了该向量,以避免太多信息)。我还没有开始用它做任何事情,所以我想我忘了它。可悲的是,我已经为此困惑了约24小时。
#include "Gui.h"
//...
void Gui::load_environment(){
    for(int i = 0; i < 10; i++){
            vector<clickable> click;
            for(int j = 0; j < 10; j++){
                    click.push_back(clickable(Rect(Point(50,50),5,10),
                                            "blar"));
            }
            ship.push_back(click);
    }
}
//...