c++ - 如何在派生类中初始化静态成员?

标签 c++ inheritance static

嗯,显然,我不能。但那是我的问题。也许这是一个设计问题,我把整件事都弄错了。

我希望在每个派生类中对一个类成员进行不同的初始化。假设我有一个 Device 类型的对象。此 Device 只是应用程序代码使用的接口(interface),因为实际设备只是两种类型之一,DeviceADeviceB。所有设备都有一些共同的特征,例如名称。那应该是类(class)成员,不是吗?所以我会:

class Device {
    static std::string sm_name;
}

但是每个家庭设备都有自己的名字。 如何为每个派生类将名称初始化为不同的值?设计有误吗? name 属性不应该是类成员吗?

最佳答案

Should the name property not be a class member?

每个家庭设备很可能应该有自己的私有(private)静态成员。您可以使用虚拟方法在设备实例上返回正确的名称。

关于c++ - 如何在派生类中初始化静态成员?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5540816/

相关文章:

java - 是否可以创建一个从另一个子类扩展的子类?

ios - 从继承类访问父类(super class)属性

java - 比较静态类中使用的参数

php - 在 PHP 中,为什么我能够以静态方式访问非静态方法?

java - 使用输入流从 XML 文件读取属性?

c++ - std::memory_order 和三个线程的同步谜题

c++ - OpenGL 阴影平移

c++ - 如何在不使用循环的情况下简洁地找到字符串中的所有数字?

c++ - 在 Windows Mobile 6 中执行隐藏进程

c# - 如果 sibling 不能,为什么 parent 可以访问子类的 protected 成员的实例?