我正在尝试将我在Linux中开发的GTKmm应用程序移植到Windows中。我有一个有多个选择的树视图,我需要将这些选择放入std :: vector中。我使用的代码(在Linux中运行良好)是这样的:
std::vector<Gtk::TreeModel::iterator> rows;
mp_FileDetailsTree->treeSelection()->selected_foreach_iter(
sigc::mem_fun(rows, &std::vector<Gtk::TreeModel::iterator>::push_back)
);
但是,在Windows上,(Visual C ++ Express 2010)我收到了很多错误(重复了很多次):
error C2784: 'sigc::bound_const_volatile_mem_functor7<T_return,T_obj,T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7> sigc::mem_fun(T_obj &,T_return (__thiscall T_obj2::* )(T_arg1,T_arg2,T_arg3,T_arg4,T_arg5,T_arg6,T_arg7) volatile const)' : could not deduce template argument for 'overloaded function type' from 'overloaded function type'
c:\devel\gtkmm\include\sigc++-2.0\sigc++\functors\mem_fun.h(6196) : see declaration of 'sigc::mem_fun'
在sigc :: mem_fun行。
知道如何解决这个问题吗?谷歌搜索没有任何用处:(。我正在使用GTKmm 2.22(完整的Windows安装程序)。
答案 0 :(得分:1)
直接使用std :: vector :: push_back作为信号处理程序是相当雄心勃勃的。编译器很困惑我并不感到惊讶。
我只是使用常规信号处理程序方法并在该方法中调用vector :: push_back()。