3

可以访问模板“类型”,例如在 std

std::vector<int>::size_type

作为模板参数传递的对象是否可以具有相同的东西?例如:

template<int i>
class A {
//?
};

A<3> instance;
int number = instance::???? //<--- assigns 3 to number

是否有可能在运行时再次获得对象类型中的 3?无需在 A 类中创建特定成员(这会增加对象的大小)

谢谢

4

2 回答 2

5

编译器在编译时就知道变量的类型,这只是让它放弃它的问题。

template<int i>
int get(const A<i> & instance)
{
    return i;
}
于 2012-09-06T19:17:16.087 回答
2
template<int i>
class A { 
public:
  enum { number = i };
};

int main() {
  A<3> instance;
  std::cout << instance.number;
  return 0;
}
于 2012-09-06T19:18:15.833 回答