c++类模板中静态成员变量的声明定义

我们知道,c++中,类的静态成员是要在.cpp文件中定义的,如果在.h中定义,会出现重复定义。

但是在写类模板时,一般所有的代码都是放在.h文件中的,如果要做分离是一件很麻烦的事。那如果出现了静态成员怎么办?

如:

// ==== ca.h =====

template<class T>

class ca

{

public:

    static std::vector<T> m_vec;    

};

对于这个m_vec怎么办呢?难道要我们在每个使用该类模板的.cpp中,都手动增加一个定义吗?

不用那么麻烦。就在ca.h中,加上一条

// ===== ca.h =====

template<class T>

std::vector<T> ca<T>::m_vec;

这样,就可以对所有的类型自动定义该静态变量啦

时间: 2024-09-20 14:46:15

c++类模板中静态成员变量的声明定义的相关文章

c++入门-C++初学,在C++类模板中,比如类Stack,什么时候用Stack什么时候用Stack&amp;amp;lt;T&amp;amp;gt;

问题描述 C++初学,在C++类模板中,比如类Stack,什么时候用Stack什么时候用Stack<T> C++TEMPLATES上面讲,类型是Stack类名是Stack 我在看数据结构与算法分析的书上, 类的定义如下: templateclass Link { E element; Link*next;//为什么是Link而不是Link<T>,这里不是类型么 Link(const E&elemval,Link*nextval=NULL)//Link*nextval=NUL

图片-类向导中的变量类型怎么添加

问题描述 类向导中的变量类型怎么添加 如图,变量类型中多了个Cmeter 解决方案 可以先选一个类型,然后再修改. 解决方案二: 直接用代码写不是更好么

js中如何对django模板中的变量进行赋值

问题描述 js中如何对django模板中的变量进行赋值 问题是这样的: 在views.py文件中,文件如下: def index(req): company_contact = '联系我们' company_about = '关于我们' company = "" return render_to_response("about.html", locals()) 我希望根据当前网页的地址是以about结尾,还是contact结尾,来分别对company赋予comoan

【Drupal 8】中调试Twig模板中的变量教程

常言:工欲善其事,必先利其器.Drupal 主题开发中技巧也不少,学会这些技巧会起到事半功倍的效果.今天给大家推介的是如何调试打印出Twig模板中的变量,不妨一看!Oops,Drupal 8! 在drupal 8 twig模板中,你可以在注释中找到大部分.常用的模板变量.但是,当一些模块或者主题引入新变量的时候,该怎么办呢? Twig模板提供了一个函数--'dump',方便你去发现.检查这些变量. 使用'dump'函数有个小前提,你需要启用twig的debug模式.关于如何启用twig的debu

我知道类中静态成员变量一被加载就存在,问题是:它的初始值是什么时候被赋的????

问题描述 静态成员变量在被加载的同时就被赋个初始值?还是该静态成员变量在被引用时或所在类被实例化时,由静态构造函数对其赋初值啊???????????? 解决方案 解决方案二:什么时候无法确定,但一般当类被调用时初始化解决方案三:你只要知道在你用之前肯定会初始化就行了解决方案四:类第一次被调用时就会按顺序依次初始化静态变量.调用静态构造函数

ThinkPHP U方法在模板中使用变量

 代码如下 复制代码 <a title="编辑" target="navTab" href="<{:U('Daily/add?daily_id='.$vo['daily_id'])}>" class="btnEdit">编辑</a> 需要使用.连接符分开

c++学习笔记之类模板中的友元声明

类模板中出现3种友元声明,每一种友元声明了与一个或者多个实体的友元关系 (1)普通非模板类或函数的友元声明,将友元关系授予明确指定的类或函数. (2)类模板或函数模板的友元声明,授予对友元所有实例的访问权. (3)只授予对类模板或函数模板的特定实例的访问权的友元声明. 1 普通友元 非模板类或非模板函数可以是类模板的友元. #include <iostream> using namespace std; template <class Type> class Bar{ //普通非模

C++中的类模板详解及示例_C 语言

C++中的函数模板 对于类的声明来说,也有同样的问题.有时,有两个或多个类,其功能是相同的,仅仅是数据类型不同,如下面语句声明了一个类: 复制代码 代码如下: class Compare_int{ public:  Compare(int a,int b)  {   x=a;   y=b;  }   int max()  {   return (x>y)?x:y;  }  int min()  {   return (x<y)?x:y;  } private:  int x,y;}; 其作用是

【C/C++学院】(11)泛型编程/函数模板/类模板

1.泛型编程基础 #include "iostream" using namespace std; void swap(int &a, int &b) { int c; c = a; a = b; b = c; } void swap(float &a, float &b) { float c; c = a; a = b; b = c; } void main() { int a = 1, b = 2; swap(a, b); float a1 = 1,