出于某种原因,这对我没用。 它给了我矢量传动器, 超出了范围错误 。
directory_entry TDE("Path");
vector <directory_entry> Temp;
Temp.push_back(TDE);
User_Data->DPath.insert(User_Data->DPath.begin(), Temp.begin(), Temp.end());
但是,这工作,
vector <directory_entry> DPath;
directory_entry TDE("Path");
vector <directory_entry> Temp;
Temp.push_back(TDE);
DPath.insert(DPath.begin(), Temp.begin(), Temp.end());
我不认为 Use_ Data- gt; DPath 有任何问题, 因为我可以推/ pop 和访问其中的元素 。 但出于某种原因, 我无法在不超出范围错误的情况下使用插入 。
有人知道为什么吗?
< strong > 编辑 : strong> 弹出一个弹出, 调试声明失败。 它给了我矢量页眉文件中的一行, 1111, 和一条消息“ 表达: 矢量代用器超出范围 ” 。 如果我确定在用户_ Data- gt; DPath 中至少有一个元素, 然后从. begin+1 开始, 我得到“ 表达: 矢量矢量 Iterator+offet 出范围”, 它给了我矢量页眉文件中的第157行 。
edit: you are all probably right.org/g_new0 函数使记忆分配http://developer.gnome.org/glib/2.32/glib-Memory-Alplace.html#g-new0
struct_type : the type of the elements to allocate. n_structs : the number of elements to allocate. Returns : a pointer to the allocated memory, cast to a pointer to struct_type.
typedef struct {
vector <directory_entry> DPath;
}State;
static gboolian select_dir (ClutterActor *actor, ClutterEvent *event, g_pointer data){
State *User_Data = (State*)data;
directory_entry Temp(Path);
User_Data->DPath.push_back(Temp);
...
return TRUE;
}
int main( argc, char*argv[]){
State *data = g_new0 (State, 1);
...
g_signal_connect(Cluter_Actor, "button-event", G_CALLBACK(select_dir), data)
...
clutter_main();
g_free(data);
return 0;
}