C++ 在C+中通过子类访问超类的受保护静态成员+;

C++ 在C+中通过子类访问超类的受保护静态成员+;,c++,inheritance,polymorphism,subclass,superclass,C++,Inheritance,Polymorphism,Subclass,Superclass,我有个问题。如果我在超类中有一个静态成员,我如何允许该超类的所有子类访问和使用该静态成员 例如 我能知道这里怎么了吗?提前谢谢 编辑: 容器类如下所示 class Container { private: vector<Task_Info*> calendar[13][32]; vector<Task_Info*> task_list; public: void add_floating_task(std::string task_description

我有个问题。如果我在超类中有一个静态成员,我如何允许该超类的所有子类访问和使用该静态成员

例如

我能知道这里怎么了吗?提前谢谢

编辑:

容器类如下所示

class Container {
private:
   vector<Task_Info*> calendar[13][32];
   vector<Task_Info*> task_list;
public:
   void add_floating_task(std::string task_description);
};
类容器{
私人:
矢量日历[13][32];
向量任务列表;
公众:
void add_floating_任务(std::string task_description);
};

给出的错误是:“使用未声明的标识符”数据库“

定义
静态
类声明之外的成员:

class Commands {
protected:
   static Container database; // <-- It's just a declration
};

Container Commands::database; // <-- You should make a definition
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
class命令{
受保护的:

静态容器数据库;//在类声明外定义
静态
成员:

class Commands {
protected:
   static Container database; // <-- It's just a declration
};

Container Commands::database; // <-- You should make a definition
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
class命令{
受保护的:
静态容器数据库;//除了缺少静态命令成员数据库的定义外,您的代码看起来正常。
您需要在
命令
类之外定义
数据库

Container Commands::database;
§9.4.2静态构件

静态成员遵守通常的类成员访问规则(第11条)。当在类成员声明中使用静态说明符时,静态说明符只能在类定义的成员规范中出现的成员声明中使用

由于
数据库
是基类
命令
的受保护成员,派生类
添加
应该能够通过
操作符或对象中的
操作符访问它。

除了缺少静态命令成员数据库的定义外,您的代码看起来正常。 您需要在
命令
类之外定义
数据库

Container Commands::database;
§9.4.2静态构件

静态成员遵守通常的类成员访问规则(第11条)。当在类成员声明中使用静态说明符时,静态说明符只能在类定义的成员规范中出现的成员声明中使用


由于
数据库
是基类
命令
的受保护成员,派生类
添加
应该能够通过
操作符或对象中的
操作符访问它。

因为
静态
成员在所有对象之间共享。
命令::数据库
应该可以。

因为
stAtdio</Cord>成员之间共享所有对象。<代码>命令::数据库< /代码>应该是正确的。< /P>“这给了我一个错误。”-这没有帮助,没有一个通用的C++错误。请显示“代码>容器的定义< /COD>”和“错误信息”。“这给了我一个错误。“C++ C++ C++语言中的错误代码,这是没有帮助的,没有一个通用的C++错误。请显示代码<容器的定义>代码>和错误信息。谢谢你的帮助。我仍然很不舒服,从java切换到C++。谢谢你的帮助。我仍然很不舒服,从java切换到C++。