【发布时间】:2012-06-27 08:53:38
【问题描述】:
我想做这样的事情:
template<template<int d, class>
class container,
int dim = d, typename content_data_type>
class MyClass {
};
我的编译器告诉我这是不可能的,因为“d”没有在以下范围内定义:
template<int d, class> class container
还有其他方法吗?
在此先感谢您对此主题的任何帮助。
更新:
@Rook:我想稍后在专业化中访问“dim”和“content_data_type”参数
例如
普通类:
template<template<int d, class>
class container>
class MyClass {
};
规格。类:
template<>
class MyClass<vec> {
vec c; // Error: vec needs template parameters
};
这给了我一个错误,因为我使用了我的模板类“vec”而没有模板参数,我希望编译器能够推断出模板参数,例如当我使用
MyClass<vec<3, float> >
那么变量“c”应该有类型
vec<3, float>
因为这不起作用,我想我可以创建两个显式模板参数“dim”和“content_data_type”,我可以像这样在专业化类中访问它们:
template<template<int d, class t>
class container,
int dim = d, typename content_data_type = t>
class MyClass<vec> {
vec<dim, content_data_type> c;
};
...再次抱歉,因为最初的问题不够具体:)
【问题讨论】:
-
您实际上想要完成什么?显然你的做法是错误的,但如果不了解更多潜在问题,就很难给你有用的建议。
-
你有完整的可编译程序吗?
-
-
@stijn:完成。谢谢,我没有注意到我的评论暗示了对所提问题的具体回答:-)
标签: c++ class templates constants