小编jak*_*122的帖子

可变参数模板函子调用

因此,我一直在尝试使用可变参数模板从更方便的子类型中组合对象,但是我很难使它完全按照我的要求进行操作。

template<class ...Functor>
struct SeqMethod:public Functor...{
  template<class F>
  void call(F& a){
    F::operator()();
  }
  template<class F,class ... funcs>
  void call(){
    F::operator()();

    call<funcs...>();
  }
  public:
  void operator()(){
    call<Functor...>();
  }
};
Run Code Online (Sandbox Code Playgroud)

这是无效的语法,因此就可以了。

理想情况下,我希望能够使用这样的东西

class A{
public:
  void operator()(){
    std::cout<<"A";
  }
};
class B{
public:
  void operator()(){
    std::cout<<"B";
  }
};

class C:public SeqMethod<A,B>{};
Run Code Online (Sandbox Code Playgroud)

在这种情况下,应输出“ AB”,并且通常适合将行为组合在一起。

c++ object-composition variadic-templates

5
推荐指数
2
解决办法
371
查看次数

风格和普查员

因此,在采用数据结构类(使用C++)的过程中,我的教授希望我们操作一个链接的扑克牌列表.然而,这并不重要,我感兴趣的是为什么她没有使用枚举器来代表套件.

在她的代码中,她使用字符串来保存卡片套件.这似乎效率低下,因为她希望我们根据套件对它们进行排序,在这种情况下,如果她使用枚举类型而不是字符串,那将会相当容易.该字符串也没有提供任何帮助,因为在打印套件时,她输出一个Unicode字符,大约是她的功能长度加倍,只是因为她没有使用枚举.

她有没有理由这样做,或者她在代码风格方面只是有一些奇怪的偏好?

c++ enums coding-style

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