gpt4 book ai didi

c++ - 错误 : unitialized member with const type c++

转载 作者:行者123 更新时间:2023-11-27 23:56:44 25 4
gpt4 key购买 nike

我正在编写一个程序,它传递一个我不想修改的结构类型。这个结构有两个 const成员,看起来如下:

struct system_s {
std::string name;
std::string pkg;
char *const start_cmd[10];
char *const end_cmd[10];
bool ros;

bool equals(const system_s &cmp);
};

该结构被存储在具有以下格式的 map 中。它是一个类成员:

std::map<std::string, system_s> sys_map;

还有一张临时 map 。想到sys_map如果您愿意,可以作为缓存。但实际上你不必担心它是如何被用于这个问题的。 sys_map正在调用以将系统添加到临时 map ,如下所示。它在类方法中:

add_system(sys_map[msg->system]); (*)

这个函数有如下定义。这是一个类方法:

int add_system(const system_s &sys);

调用 (*) 时,出现以下错误:

system.h: In instantiation of ?std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type& std::map<_Key, _Tp, _Compare, _Alloc>::operator[](const key_type&) [with _Key = std::basic_string<char>; _Tp = system_s; _Compare = std::less<std::basic_string<char> >; _Alloc = std::allocator<std::pair<const std::basic_string<char>, system_s> >; std::map<_Key, _Tp, _Compare, _Alloc>::mapped_type = system_s; std::map<_Key, _Tp, _Compare, _Alloc>::key_type = std::basic_string<char>]?:
/tc_manager_node.cpp:74:41: required from here
/system.h:26:8: error: uninitialized member ?system_s::start_cmd? with ?const? type ?char* const [10]? [-fpermissive]
struct system_s {
^
system.h:26:8: error: uninitialized member ?system_s::end_cmd? with ?const? type ?char* const [10]? [-fpermissive]
In file included from /usr/include/c++/4.8/map:61:0,
from /opt/ros/indigo/include/ros/console.h:42,
from /opt/ros/indigo/include/ros/ros.h:40,
from

/tc_manager_node.cpp:2: /usr/include/c++/4.8/bits/STL_map.h:469:59: 注意:合成方法 ?system_s::system_s()?首先需要在这里 __i = insert(__i, value_type(__k, mapped_type()));

为什么这个 system_s 类型的成员“未初始化”?它大概存储在 sys_map 中已初始化.跟通过system_s有关系吗作为引用 int add_system(const system_s &sys)

最佳答案

mapoperator[](您用sys_map[msg->system] 调用)有可能创建一个新的如果未找到映射条目,则为条目​​。新条目是默认构造的,但您的类不是默认构造的。

要解决此问题,请不要在 map 上使用 []。而是使用 find 来查找您要查找的条目。

关于c++ - 错误 : unitialized member with const type c++,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42183854/

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