我在这里得到了很多帮助,这是我第一次提出问题,如果我犯了任何愚蠢的错误,请原谅我。谢谢!
我有一个名为 Car
的基类,其中有一个供派生类共享的静态变量。例如
class Car {
static int mileage;
}
然后我为汽车的不同组件创建了一系列子类,例如engine
、wheel
、body
...他们都共享/修改mileage
的信息。
整个项目可能有多个Car
对象,每个Car
对象需要包含一组engine
组件,wheel
, body
...所以我的问题是如何声明/定义所有这些对象。或者实现这个想法的其他方式是什么?
简单来说,如何制作Engine eng_car1;车轮 whe_car1; Body bod_car1;
共享一个static int mileage
和Engine eng_car2;轮whe_car2; Body bod_car2;
分享另一个static int mileage
?
再次感谢!
最佳答案
我会忽略您出于某种原因想要完成里程的事实 static
.让一个类别中的所有车辆共享相同的里程值是一个奇怪的要求。但我假设您想要一个更适用的属性的解决方案。
实现目标的一种方法是模板化 Car
并且有两个专长:
template <int N> struct Car;
template<> struct Car<1>
{
static int mileage;
};
template<> struct Car<2>
{
static int mileage;
};
您可以用枚举替换 1 和 2 以提高可读性。或者使用 typedef
这种方法的优点是两个实例化将各自获得自己的 mileage
;这就是你想要的。
然后,继承自Car<1>
或 Car<2>
作为适当的。如果需要,您可以让模板继承自公共(public)基类。
不要忘记为两者保留存储空间 static
s 恰好在一个编译单元中,否则您将遇到链接时错误。
关于c++ - 如何让一组不同的子类对象共享另一组基类的一个静态变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34675038/