头文件的静态类成员

static class member for header files

本文关键字:成员 静态类 文件      更新时间:2024-05-09

我正在处理一个类层次结构,其中我有一个基类,该基类包含一个值,该值需要与代码中的所有其他派生类共享。我目前通过在具有纯虚拟函数的基类中使用静态double来设置值:

class base {
public:
static double shared_value;
virtual void set_value(double v) = 0;
virtual double get_value() = 0;
};
class derived1 : public base {
public:
void set_value(double v){ shared_value = v; }
double get_value() { return shared_value; }
};
class derived2 : public base {
public:
void set_value(double v){ shared_value = v; }
double get_value() { return shared_value; }
};
etc...

当我在代码中使用头文件时,问题就出现了。我知道我不能定义一个静态成员变量不止一次,而且使用头会给我带来多个初始化错误。我不知道我还能从任何一个类中设置和查看这个变量,任何帮助都将不胜感激。

您需要在源文件中定义shared_value,如下所示:

double base::shared_value = 0;

现在,任何子类都可以访问该值,包括编辑它