小编Ale*_*ent的帖子

模板和重载

  template<class Key1, class Key2, class Type> class DualMultimapCache
  {
  public:
     std::list<std::reference_wrapper<Type>> get(Key1 const & key);
     std::list<std::reference_wrapper<Type>> get(Key2 const & key);
     template<class ...Args> Type & put(Key1 const & key, Args const & ...args);
     template<class ...Args> Type & put(Key2 const & key, Args const & ...args);
  };
Run Code Online (Sandbox Code Playgroud)

在这里,我有一个类的公共接口.基础数据结构无关紧要.一切都将只是正常工作时Key1,并Key2有不同的类型.如果它们最终成为相同的类型,则过载可能是不可能的.我这是对的吗?

如果我是,有没有办法分离过载,同时保持签名尽可能干净?

编辑:这是一个更深入的样本

  template<class Key1, class Key2, class Type> class DualMultimapCache
  {
  public:
     std::list<std::reference_wrapper<Type>> get(Key1 const & key);
     std::list<std::reference_wrapper<Type>> get(Key2 const & key);
     template<class ...Args> Type & put(Key1 const & key, …
Run Code Online (Sandbox Code Playgroud)

c++ templates overloading overload-resolution class-template

7
推荐指数
1
解决办法
137
查看次数

为什么我在构造我的dict时会得到ErrorValue

pkwargs = dict(("tickNum", tickNum), **kwargs)
Run Code Online (Sandbox Code Playgroud)

在这里,我将元组中的键值对添加到键值对列表中,并将其作为新的dict输出.它提出了ValueError: dictionary update sequence element #0 has length 7; 2 is required.

pkwargs = dict(("tickNum", tickNum), kwargs)
Run Code Online (Sandbox Code Playgroud)

在这里,我将相同的键值对添加到dict,而不是将其作为新的dict输出.它提出了TypeError: dict expected at most 1 arguments, got 2.

我不明白为什么......我也不知道如何解决这个问题.

python

2
推荐指数
1
解决办法
364
查看次数