no matching function for call to ‘senseauto::data_provider::Data_User::Data_User...

2025年10月09日 17:50 响应: 3.27秒 状态: success

🚨 错误信息

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_sharednew 时),仔细检查传递的参数类型和数量,确保它们与类的构造函数签名一致。