【问题标题】:Undefined static class variable未定义的静态类变量
【发布时间】:2013-03-11 19:50:45
【问题描述】:

我有以下代码:

class gptr_timer {

private:

  static qtimer_t gptr_get_timer;

public:

  static void create_gptr_get_timer(){
    gptr_get_timer = qtimer_create();
  }

  static void destroy_gptr_get_timer(){
    qtimer_destroy(gptr_get_timer);
  }

  static void start_gptr_get_timer(){
    qtimer_start(gptr_get_timer);
  }

  static void stop_gptr_get_timer(){
    qtimer_stop(gptr_get_timer);
  }

  static double get_gptr_get_time(){
    return qtimer_secs(gptr_get_timer);
  }

};

这会产生以下编译错误:

/home/knusbau2/barnes/qppl/gptr.h:24: undefined reference to `ppl::gptr_timer::gptr_get_timer'

我有点困惑,因为我明确定义了 gptr_get_timer。

【问题讨论】:

标签: c++ class static undefined


【解决方案1】:

通过添加定义:

class gptr_timer { /* ... */ };       // class definition;
                                      // *delcares* static member variables

qtimer_t gptr_timer::gptr_get_timer;  // *define* static member variables

静态成员定义必须进入一个单独的翻译单元,而类定义通常在标题中。小心。

成员定义也是初始化的地方,除了少数特殊情况(即静态常量表达式)可以在类定义中初始化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2016-08-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多