首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >模板类在C++中可以有静态成员吗

模板类在C++中可以有静态成员吗
EN

Stack Overflow用户
提问于 2011-04-29 12:30:39
回答 1查看 34.2K关注 0票数 32

C++中的模板类可以有静态成员吗?由于它不存在,并且在使用之前是不完整的,这是可能的吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-04-29 13:12:51

是。静态成员在template< … > class { … }块内声明或定义。如果它已声明但未定义,则必须有另一个声明提供该成员的定义。

代码语言:javascript
复制
template< typename T >
class has_static {
    // inline method definition: provides the body of the function.
    static void meh() {}

    // method declaration: definition with the body must appear later
    static void fuh();

    // definition of a data member (i.e., declaration with initializer)
    // only allowed for const integral members
    static int const guh = 3;

    // declaration of data member, definition must appear later,
    // even if there is no initializer.
    static float pud;
};

// provide definitions for items not defined in class{}
// these still go in the header file

// this function is also inline, because it is a template
template< typename T >
void has_static<T>::fuh() {}

/* The only way to templatize a (non-function) object is to make it a static
   data member of a class. This declaration takes the form of a template yet
   defines a global variable, which is a bit special. */
template< typename T >
float has_static<T>::pud = 1.5f; // initializer is optional

为模板的每个参数化创建一个单独的静态成员。不可能在模板生成的所有类之间共享单个成员。为此,您必须在模板之外定义另一个对象。部分专门化的特征类可能会对此有所帮助。

票数 40
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/5827903

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档