我正在编写Saleae Custom Analyzer,但我也是C ++的新手
这在类中不起作用:
Declare array in C++ header and define it in cpp file?
如何在课堂上做到这一点?
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中它说'必须是左值' 我可以稍后改变长度吗? 我可以稍后改变价值吗? 我的梦想解决方案是在头文件中声明没有长度的数组,并在cpp文件中使用随机数据初始化。
答案 0 :(得分:3)
对于C ++中的可变长度数组,请使用std::vector
。
在您的标题文件中,您将拥有:
std::vector<U8> mSerialText;
然后在源文件中,您可以使用{}语法对其进行初始化,就像在您的示例中一样:
mSerialText = {0xAA, 0x01, 0x55};
它具有operator[]
或at
功能的索引访问权限,并且超出范围检查。要插入新元素,请致电push_back
。
您可以阅读有关如何在here
答案 1 :(得分:-1)
如果你真的想要一个固定大小的数组:
// header
struct A {
int a[3];
A();
};
// cpp source
A :: A() : a{1,2,3} {
}