gpt4 book ai didi

c++ - C++中的多个降序对象

转载 作者:太空宇宙 更新时间:2023-11-04 14:12:53 24 4
gpt4 key购买 nike

我不熟悉 C++ 和一般的面向对象编程。我的问题是如何将多个对象与多个子类对象链接起来,每个子类对象都有多个要跟踪的数据变量?

基本上我有对象类型“reciever”。每个“接收者”都有特定的变量来存储数据流中的信息。但是,每个“接收者”都有 32 个可能的“ channel ”。每个 channel 都有更多的数据变量要存储。

假设我希望程序最多有 100 个接收者。构建这个的最佳方法是什么?我一直这样想:

    class BaseStation{
public:
string baseID;
int numberSat;
FP64 timeUTC;
INT16U week;
FP64 GPStoUTCoffset;
FP64 GLOtoUTCoffset;
INT8S recieverTimeOffset;
FP64 posX; //geocentric coordinates in meters
FP64 posY;
FP64 posZ;
FP64 rmsX; //expected root mean square error of coordinates
FP64 rmsY;
FP64 rmsZ;
};

class Channels : public BaseStation
{
public:
INT8U systemID;
INT8U satID;
INT8U GlonassNumber;
INT8U SNR; //signal to noise ratio
FP64 carrierPhase; //cylces
FP64 psuedoRange; //milliseconds
FP64 doppler; //HZ cycles

FP64 tropDelay; //meters
FP64 ionoDelay; //meters
};

然后创建如下对象:

    Channels base[100];
Channels channel[100][32];

除了确保 base 和 channel 的数组指针相同之外,还有其他方法可以将 32 个 channel 绑定(bind)到单个 base 对象吗?

最佳答案

接收者与 channel 是一对多的关系。如果你知道你总是有 32,你可以这样做:

class Receiver {

Channel channels[32];

/* variables specific to a receiver */

string baseID;
int numberSat;
FP64 timeUTC;
INT16U week;
FP64 GPStoUTCoffset;
FP64 GLOtoUTCoffset;
INT8S recieverTimeOffset;
FP64 posX; //geocentric coordinates in meters
FP64 posY;
FP64 posZ;
FP64 rmsX; //expected root mean square error of coordinates
FP64 rmsY;
FP64 rmsZ;

};

这是最简单的变体。使用指针数组可能更好(如果 channel 不存在/未使用,则将 channel 设置为 NULL)。或者,您可以考虑使用 STL::vector

class Channel {

/* variables specific a single channel */

INT8U systemID;
INT8U satID;
INT8U GlonassNumber;
INT8U SNR; //signal to noise ratio
FP64 carrierPhase; //cylces
FP64 psuedoRange; //milliseconds
FP64 doppler; //HZ cycles

FP64 tropDelay; //meters
FP64 ionoDelay; //meters

};

然后在您的顶层模块中,创建一个包含 100 个接收器的数组:

Receiver allReceivers[100];

同样,如果您不总是恰好有 100 个,那么有更好的方法来存储它,就像您在上面的接收器中使用 channel 一样。您还可以将接收器封装到顶级类中,并在其中管理接收器数组。

还要注意:

Channels channel[100][32];

在这里,您要声明一个二维 channel 数组。这可能行得通,但使用封装接收器中的 channel 集(对关系建模)是更好的 OOP。

祝你好运!

关于c++ - C++中的多个降序对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13318684/

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