gpt4 book ai didi

c++ - 结构 - 表达式必须是可修改的值

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

我是结构的新手,有点吃力。我有以下结构:

typedef struct 
{
CHAR_t bWpId[10];
CHAR_t bWpDescr[25];
UINT16_t wCoA;
sUtmCoordinate_t Coordinate;
} sWaypoint_t;

typedef struct
{
sWaypointListElement Element[cMAX_WAYPOINTS];
UINT8_t bHead;
UINT8_t bTail;
UINT8_t bNumElements;
} sWaypointList;

现在每个路点都是路点列表中的一个元素,它也是一个结构。

class CWaypointList
{
private:
sWaypointList WaypointList;
}

现在我的问题是如何在不编写访问器的情况下读取结构的每个元素中的值?访问器是访问私有(private)结构中数据的唯一方法吗?

如果我这样做,我会得到错误:expression must be a modifiable value.:

 element.bWpId = {'0','0','0','0','0','0','0','0','0','1'};

最佳答案

您不能使用该语法在数组定义之外初始化数组。您必须手动填写所有值。

幸运的是,有标准的 C++ 函数可以做到这一点,例如 std::fill :

std::fill(std::begin(element.bWpId), std::end(element.bWpId), '0');
element.bWpId[9] = '1';

您当然可以为sWaypoint_t 结构创建构造函数,并在其中初始化数组:

typedef struct sWaypoint_s
{
CHAR_t bWpId[10];
CHAR_t bWpDescr[25];
UINT16_t wCoA;
sUtmCoordinate_t Coordinate;

sWaypoint_s()
: bWpId{'0','0','0','0','0','0','0','0','0','1'}
{}
} sWaypoint_t;

问题在于它需要支持 C++11 的编译器。

关于c++ - 结构 - 表达式必须是可修改的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18311219/

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