gpt4 book ai didi

c++ - 如何让一组不同的子类对象共享另一组基类的一个静态变量?

转载 作者:行者123 更新时间:2023-11-30 05:33:36 25 4
gpt4 key购买 nike

我在这里得到了很多帮助,这是我第一次提出问题,如果我犯了任何愚蠢的错误,请原谅我。谢谢!

我有一个名为 Car 的基类,其中有一个供派生类共享的静态变量。例如

class Car {
static int mileage;
}

然后我为汽车的不同组件创建了一系列子类,例如enginewheelbody ...他们都共享/修改mileage的信息。整个项目可能有多个Car对象,每个Car对象需要包含一组engine组件,wheel , body ...所以我的问题是如何声明/定义所有这些对象。或者实现这个想法的其他方式是什么?

简单来说,如何制作Engine eng_car1;车轮 whe_car1; Body bod_car1;共享一个static int mileageEngine 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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com