如何获取非类型模板参数的值?

Jae*_*ege 1 c++ templates

这是示例:

template <int n>
class A { };

class B {
public:
  int foo() {
    return a.n;  // error
  }
private:
  A<10> a;
};
Run Code Online (Sandbox Code Playgroud)

我想获得除模板本身以外的类中实例化类A<10>的非类型模板参数的值,有没有办法做到这一点?还是应该使用其他设计来避免此问题?BA

Mat*_*nen 5

您不能像这样访问其他类模板参数。另一个类必须公开它,例如:

template <int n>
class A {
public:
    static const int num = n;
};
Run Code Online (Sandbox Code Playgroud)

然后,您可以按a.num(或A<10>::num当然)访问它