0

我正在尝试将我在 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 安装程序)。

4

1 回答 1

1

直接使用 std::vector::push_back 作为信号处理程序是相当雄心勃勃的。我对编译器感到困惑并不感到惊讶。

我只会使用常规信号处理程序方法并在该方法内调用 vector::push_back() 。

于 2012-01-02T20:10:34.140 回答