小编Wei*_*ong的帖子

C++模板:未初始化全局对象中的静态成员

我有一段简单的C++代码,其中我通过专门化模板来定义模板和全局对象.对象构造函数访问专用模板中的静态成员.但事实证明静态成员在那时没有被初始化.但对于本地对象(在函数体中定义),它可以工作.我糊涂了...

我的c ++编译器是:g ++(Ubuntu 5.4.0-6ubuntu1~16.04.4)5.4.0 20160609

/////////////////////////
template<typename T>
class TB{
public:
  const char *_name;
  TB(const char * str):_name(str){
    cout << "constructor is called:" << _name << endl;
  };

  virtual ~TB(){
    cout << "destructor is called:" << _name << endl;
  };
};

template<typename T>
class TA{
public:
  const char *_name;
  TA(const char * str):_name(str){
    cout << "constructor is called:" << _name << endl;
    cout << tb._name <<endl;
  };

  virtual ~TA(){
    cout << "destructor is called:" << _name << endl;
  }; …
Run Code Online (Sandbox Code Playgroud)

c++ templates constructor initialization static-members

12
推荐指数
1
解决办法
881
查看次数