未定义的静态类变量
Undefined static class variable
我有以下代码:
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
通过添加定义:
class gptr_timer { /* ... */ }; // class definition;
// *delcares* static member variables
qtimer_t gptr_timer::gptr_get_timer; // *define* static member variables
静态成员定义必须放在一个单独的翻译单元中,而类定义通常放在头文件中。小心。成员定义也是初始化的地方,除了少数特殊情况(即静态常量表达式)可以在类定义中初始化。
相关文章:
- 类和静态变量
- (为什么)我们可以在初始化中将非静态类成员分配给静态变量吗?
- 在 c++ 中使用字符串变量选择静态类结构,而不带对象
- 从静态成员函数访问私有非静态类变量 - C++
- 静态类变量的多重定义
- C++ 在静态函数中使用非静态变量返回类实例
- 模板类中嵌套类的C 静态成员变量
- 重新声明的静态类变量
- 尝试为所有子类 B 编辑父类 A 类的静态变量
- 如何创建一个静态类来引用带有C++的字符串变量
- 类的静态成员变量(受保护)的作用域
- C++ - 在派生类中静态初始化受基类保护的成员变量
- 我如何防止静态类成员变量需要两个定义/声明
- 模板类的嵌套类,模板类的静态成员变量
- 我应该更喜欢在类方法中使用静态类变量还是静态变量
- 每个派生类的静态变量
- C++中线程计数的静态类变量
- 函数内部的静态变量与c++中的静态类变量
- 是否可以在没有模板参数的情况下使用模板化类的静态类函数
- "类变量"、"类变量()"和"类变量(参数)"之间的区别