用于初始化模板类的静态数据成员的部分模板特化
如何针对特定参数以不同方式初始化模板类的静态数据成员?
我知道模板与其他类型的类不同,并且只有项目中使用的内容才会被实例化。我可以为不同的参数列出许多不同的初始化并让编译器使用合适的吗?
例如,以下操作是否有效?如果无效,正确的方法是什么? :
template<class T>
class someClass
{
static T someData;
// other data, functions, etc...
};
template<class T>
T someClass::someData = T.getValue();
template<>
int someClass<int>::someData = 5;
template<>
double someClass<double>::someData = 5.0;
// etc...
How would one initialize static data members of a template class differently for particular parameters?
I understand that templates are different than other kinds of classes and only what is used in the project ever gets instantiated. Can I list a number of different initializations for different parameters and have the compiler use whichever is appropriate?
For example, does the following work, and if not what is the correct way to do this? :
template<class T>
class someClass
{
static T someData;
// other data, functions, etc...
};
template<class T>
T someClass::someData = T.getValue();
template<>
int someClass<int>::someData = 5;
template<>
double someClass<double>::someData = 5.0;
// etc...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
应该有效。您可能需要将它们放入 .c 文件而不是标头中。
这也是一个工作部分模板专业化,带有静态数据成员的初始化:
Should work. You may need to put these into the .c file instead of the header.
Here is also a working partial template specialization with initialization of static data members: