cannot call member function ‘void senseauto::data_provider::Data_User::jsonKeysT...
🚨 错误信息
[ 16%] Built target SQLiteCpp_cpplint
/data/gerrit/workspace_GWM_repo/Platform/IC_NM_DataProvider/test/unittest/src/data_provider/relational/data/test_Data_User.cpp: In member function ‘virtual void senseauto::data_provider::Data_UserTest_JsonKeyToColumnName_Test::TestBody()’:
/data/gerrit/workspace_GWM_repo/Platform/IC_NM_DataProvider/test/unittest/src/data_provider/relational/data/test_Data_User.cpp:363:40: error: cannot call member function ‘void senseauto::data_provider::Data_User::jsonKeysToColumnNameList(std::__cxx11::list<std::__cxx11::basic_string<char> >&)’ without object
363 | Data_User::jsonKeysToColumnNameList(keys);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
🤖 AI解决方案
/data/gerrit/workspace_GWM_repo/Platform/IC_NM_DataProvider/test/unittest/src/data_provider/relational/data/test_Data_User.cpp: In member function ‘virtual void senseauto::data_provider::Data_UserTest_JsonKeyToColumnName_Test::TestBody()’:
/data/gerrit/workspace_GWM_repo/Platform/IC_NM_DataProvider/test/unittest/src/data_provider/relational/data/test_Data_User.cpp:363:40: error: cannot call member function ‘void senseauto::data_provider::Data_User::jsonKeysToColumnNameList(std::__cxx11::list<std::__cxx11::basic_string<char> >&)’ without object
363 | Data_User::jsonKeysToColumnNameList(keys);
| ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~
错误翻译:
错误:无法在没有对象的情况下调用成员函数 ‘void senseauto::data_provider::Data_User::jsonKeysToColumnNameList(std::__cxx11::list<std::__cxx11::basic_string<char> >&)’
原因分析:jsonKeysToColumnNameList 是 Data_User 类的一个成员函数,但你在测试代码中尝试将其作为静态函数调用,而它没有被声明为静态。
解决方案:
在调用 jsonKeysToColumnNameList 函数之前,需要先创建一个 Data_User 类的实例(对象)。
// ... 在你的测试函数中 ...
senseauto::data_provider::Data_User dataUserInstance; // 创建 Data_User 对象
std::list<std::string> keys;
// ... 填充 keys ...
dataUserInstance.jsonKeysToColumnNameList(keys); // 使用对象调用成员函数
// ...
预防措施:
- 明确区分成员函数和静态函数的调用方式。
- 在定义类时,仔细检查函数的访问修饰符(public, private, protected)以及是否应为静态。