gpt4 book ai didi

c++ - 嵌入式 C++ : Initialization of an array member of a struct within a class, 大小省略

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:11:50 26 4
gpt4 key购买 nike

您好,在此先感谢您对以下问题的任何帮助。

编辑:我忘了补充一点,这是在无法访问 STL 功能的嵌入式系统上。我很抱歉遗漏了这条非常重要的信息。这是我第一次广泛使用 C++ 进行编码,所以我忘了提及显而易见的事情。我回来补充这个事实,这个问题已经收到了一些回复。感谢大家这么快的回复!

我正在尝试初始化结构的数组成员,该结构又是 C++ 类的公共(public)成员。结构中省略了数组大小。这是一个例子:

// ClassA.h

Class A
{
public:

struct StructA
{
StructB structs[];
};

struct StructB
{
// stuff
};

ClassA();
//etc
};

// ClassB.h

ClassB: public ClassA
{

public:

StructA structA;

ClassB()
// etc
};

// ClassB.cpp

// What do I do here?

我试过:

StructA ClassB::structA.structs[] = { 第一,第二,第三 }

没有任何运气。我对 C++ 比较陌生,所以这个让我很困惑。我可以在 StructA 中为数组成员添加一个大小,但如果有一种合法的方式来处理这个问题。

谢谢!

最佳答案

没有大小的数组不是有效的 C++;它们是 C99 中的一项功能,需要一些 malloc 魔法才能发挥作用。如果您尝试通过 g++ -pedantic 使用此功能编译代码,您将看到它发出:

$ g++ -Wall -pedantic test.cc
test.cc:5: error: ISO C++ forbids zero-size array 'foo'

我建议您改用 std::vector,它与 C99 中的未确定大小的数组具有相同的功能,但更安全:

std::vector<StructB> structs;

然后使用 push_back 添加元素。

关于c++ - 嵌入式 C++ : Initialization of an array member of a struct within a class, 大小省略,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5486586/

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