相关疑难解决方法(0)

C++如何生成函数重载的所有排列?

可以说我有类Date和类Year,MonthDay.

struct Date {
  Date(Year year, Month month, Day day) : d(day), m(month), y(year) {};
  Date(Month month, Day day, Year year) : d(day), m(month), y(year) {};
  Date(Day day, Month month, Year year) : d(day), m(month), y(year) {};
  Date(Day day, Year year, Month month) : d(day), m(month), y(year) {};
  ...
  ...

  private:
    Day d;
    Month m;
    Year y;
}
Run Code Online (Sandbox Code Playgroud)

这允许我没有特定的参数布局,Date因为我有很多过载.

我能自动生成所有排列/过载吗?

只是要清楚:

  • 排列只是参数布局,没有任何关于它们应该改变,因为我知道不可能自动化.
  • 所有生成的重载都应该具有相同的代码,因为只有参数的布局不会改变逻辑本身.

c++ constructor-overloading c++11

18
推荐指数
2
解决办法
940
查看次数

C++ - 函数范围内的函数声明?

我前段时间正在阅读C++ 11标准草案并遇到过这个草案(见§8.3.6,第204页):

void g(int = 0, ...); // OK, ellipsis is not a parameter so it can follow

// a parameter with a default argument
void f(int, int);
void f(int, int = 7);
void h() {
    f(3); // OK, calls f(3, 7)
    void f(int = 1, int); // error: does not use default
    // from surrounding scope
}
void m() {
    void f(int, int); // has no defaults
    f(4); // error: wrong number of arguments
    void …
Run Code Online (Sandbox Code Playgroud)

c++ scope declaration function

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