如何在CPP中声明Array和Init

How to declare array in header and init in cpp

本文关键字:Array Init 声明 CPP      更新时间:2023-10-16

我正在写Saleae自定义分析仪,但我也是C 的新手
这在班级内部不起作用:在C 标头中声明数组并在CPP文件中定义它?
如何在课堂上做?

class SimpleSerialSimulationDataGenerator
{
public:
    SimpleSerialSimulationDataGenerator();
    ~SimpleSerialSimulationDataGenerator();
    void Initialize( U32 simulation_sample_rate, SimpleSerialAnalyzerSettings* settings );
    U32 GenerateSimulationData( U64 newest_sample_requested, U32 sample_rate, SimulationChannelDescriptor** simulation_channel );
protected:
    SimpleSerialAnalyzerSettings* mSettings;
    U32 mSimulationSampleRateHz;
protected:
    void CreateSerialByte();
    U8 mSerialText[3] = {0xAA, 0x01, 0x55};
    U32 mStringIndex = 0;
    SimulationChannelDescriptor mSerialSimulationData;
};

mserialText是我想在.cpp下不在标头的下方启动的内容:

SimpleSerialSimulationDataGenerator::SimpleSerialSimulationDataGenerator()
{
    mSerialText = {0xAA, 0x01, 0x55};
}

但在CPP中说"必须是lvalue"
1.我可以稍后更改长度吗?
2.我可以以后更改价值吗?
我的梦想解决方案是在没有长度的情况下将数组声明数组,而在CPP文件中使用随机数据。

对于C 中的可变长度阵列使用std::vector

在您的标题文件中,您将拥有以下内容:

std::vector<U8> mSerialText;

然后在源文件中您可以像这样的示例中使用{}语法初始化它:

mSerialText = {0xAA, 0x01, 0x55};

它具有带有operator[]at功能的索引访问,并具有超出范围检查。要插入新元素,请致电push_back。您可以阅读有关如何在此处使用向量的更多信息