我有以下代码段:
class Mesh{
public:
static const int DIM = 3;
// several more static constants here
}
template <class M>
Coords{
public:
int c[M::DIM];
// some more members using static constants of M here
}
我会用以下方法实例化一些协调:
Coords<Mesh> coords;
现在这基本上对我有用。
根据文档,CUDA 6.5根本不支持static
成员(编程指南,E.2.6.1。数据成员,没有可用的链接)。 CUDA 7.0增加了对static const
成员(http://docs.nvidia.com/cuda/cuda-c-programming-guide/index.html#const-variables)的支持。
只要我使用CUDA 6.5,如何替换 static const int
? #define
可能不是一个好的选择,因为模板化将不再按预期工作。
答案 0 :(得分:3)
尝试使用枚举?
class Mesh{
public:
enum { DIM = 3 };
// several more constants declared as enums here
}
template <class M>
Coords{
public:
int c[M::DIM];
// some more members using enums of M here
}