no matching function for call to ‘senseauto::data_provider::Data_User::Data_User...
🚨 错误信息
Building CXX object data_provider/CMakeFiles/senseauto_data_provider.dir/src/relational/data/Data_User.cpp.o
In file included from /data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/aarch64-buildroot-linux-gnu/bits/c++allocator.h:33,
from /data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/allocator.h:46,
from /data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/stl_tree.h:64,
from /data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/map:60,
from /data/gerrit/workspace_AIBox_repo/AICore/IC_NM_DataProvider/data_provider/src/relational/data/Data_CommuteTime.cpp:5:
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/ext/new_allocator.h: In instantiation of ‘void __gnu_cxx::new_allocator<_Tp>::construct(_Up*, _Args&& ...) [with _Up = senseauto::data_provider::Data_User; _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}; _Tp = senseauto::data_provider::Data_User]’:
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/alloc_traits.h:516:17: required from ‘static void std::allocator_traits<std::allocator<_Tp1> >::construct(std::allocator_traits<std::allocator<_Tp1> >::allocator_type&, _Up*, _Args&& ...) [with _Up = senseauto::data_provider::Data_User; _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}; _Tp = senseauto::data_provider::Data_User; std::allocator_traits<std::allocator<_Tp1> >::allocator_type = std::allocator<senseauto::data_provider::Data_User>]’
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/shared_ptr_base.h:519:39: required from ‘std::_Sp_counted_ptr_inplace<_Tp, _Alloc, _Lp>::_Sp_counted_ptr_inplace(_Alloc, _Args&& ...) [with _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}; _Tp = senseauto::data_provider::Data_User; _Alloc = std::allocator<senseauto::data_provider::Data_User>; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/shared_ptr_base.h:650:16: required from ‘std::__shared_count<_Lp>::__shared_count(_Tp*&, std::_Sp_alloc_shared_tag<_Alloc>, _Args&& ...) [with _Tp = senseauto::data_provider::Data_User; _Alloc = std::allocator<senseauto::data_provider::Data_User>; _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/shared_ptr_base.h:1342:14: required from ‘std::__shared_ptr<_Tp, _Lp>::__shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<senseauto::data_provider::Data_User>; _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}; _Tp = senseauto::data_provider::Data_User; __gnu_cxx::_Lock_policy _Lp = __gnu_cxx::_S_atomic]’
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/shared_ptr.h:409:59: required from ‘std::shared_ptr<_Tp>::shared_ptr(std::_Sp_alloc_shared_tag<_Tp>, _Args&& ...) [with _Alloc = std::allocator<senseauto::data_provider::Data_User>; _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}; _Tp = senseauto::data_provider::Data_User]’
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/shared_ptr.h:862:14: required from ‘std::shared_ptr<_Tp> std::allocate_shared(const _Alloc&, _Args&& ...) [with _Tp = senseauto::data_provider::Data_User; _Alloc = std::allocator<senseauto::data_provider::Data_User>; _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}]’
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/bits/shared_ptr.h:878:39: required from ‘std::shared_ptr<_Tp> std::make_shared(_Args&& ...) [with _Tp = senseauto::data_provider::Data_User; _Args = {const char (&)[1], const char (&)[1], const char (&)[1]}]’
/data/gerrit/workspace_AIBox_repo/AICore/IC_NM_DataProvider/data_provider/src/relational/data/Data_CommuteTime.cpp:373:51: required from here
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/ext/new_allocator.h:162:11: error: no matching function for call to ‘senseauto::data_provider::Data_User::Data_User(const char [1], const char [1], const char [1])’
162 | { ::new((void *)__p) _Up(std::forward<_Args>(__args)...); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
🤖 AI解决方案
/data/gerrit/workspace_AIBox_repo/Vendor/IC_NM_OrinX/aarch64--glibc--stable-2022.08-1/aarch64-buildroot-linux-gnu/include/c++/11.3.0/ext/new_allocator.h:162:11: error: no matching function for call to ‘senseauto::data_provider::Data_User::Data_User(const char [1], const char [1], const char [1])’
162 | { ::new((void *)__p) _Up(std::forward<Args>(__args)...); }
| ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
错误翻译:
在调用 senseauto::data_provider::Data_User 类的构造函数时,找不到匹配的函数,无法使用 (const char [1], const char [1], const char [1]) 这三个参数来构造对象。
原因分析:Data_User 类没有定义接受三个 const char 类型(或可转换为 const char 类型)的构造函数,但代码尝试使用这样的参数来创建 Data_User 对象,很可能是通过 std::make_shared 函数。
解决方案:
- 检查
Data_User类的构造函数:
如果
Data_User 类有一个接受三个 const char 的构造函数,请确保其定义正确。* 如果
Data_User 类没有这个构造函数,你需要添加一个。例如:
++
namespace senseauto {
namespace data_provider {
class Data_User {
public:
// ... 其他成员 ...
// 添加一个接受三个 const char* 的构造函数
Data_User(const char* arg1, const char* arg2, const char* arg3) {
// 在这里实现构造函数的逻辑
// 例如,将参数赋值给成员变量
}
// ... 其他成员 ...
};
} // namespace data_provider
} // namespace senseauto
Data_CommuteTime.cpp 文件第 373 行:* 确认在调用
std::make_shared(...) 时,传入的参数是正确的,并且与 Data_User 类的某个构造函数匹配。如果意图是传递空字符串,请确保它们被正确构造。
++
// 假设 Data_CommuteTime.cpp 的 373 行附近是这样的:
// std::make_shared<senseauto::data_provider::Data_User>(char_array_1, char_array_2, char_array_3);
// 需要确保 char_array_1, char_array_2, char_array_3 是合法 C 风格字符串,
// 并且 Data_User 类有一个接受相应参数的构造函数。
预防措施:
make_shared 或 new 时),仔细检查传递的参数类型和数量,确保它们与类的构造函数签名一致。