如何在CPP中声明Array和Init
How to declare array in header and init in cpp
我正在写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
。您可以阅读有关如何在此处使用向量的更多信息
相关文章:
- GCC对可能有效的代码抛出init list生存期警告
- C++11 中不同类型的对象的 std::array 的替代方案
- constexpr begin of a std::array
- C++如果必须在编译时确定大小,std::array 有什么意义?
- GLEW/GLUT:调用init并创建一个窗口后,取消初始化并重新初始化?
- OpenGL VBO Indexing ( How to compute Index Array)
- 标准::unordered_map 中的 std::array 的值初始化
- 将 out/in out 参数与 if/switch 的 init 语句一起使用
- "Warning: Comma within array index expression"但逗号分隔函数参数
- 确保编译时的特定 std::array 位置
- std::array的长度有大小限制吗?
- 将 std::array 移动到另一个 std::array
- 首先按给定顺序打印所有数字,然后使用 Array 打印所有字符和其他符号
- 为什么 std::shared_ptr 被认为是"heavy"和"expensive",但 std::array "same perfprmance as plain (c-style) arrays
- 使用 std::ios_base::Init 正确初始化全局变量
- 将 **float array 从 C++ Dll 传递给 python
- std::bind on statd::array 的运算符 []
- 检查输入 std::array 指针数据是否等于某个常量数组
- 我可以安全地复制矢量<array>吗?
- 如何在CPP中声明Array和Init