错误:无法使用“const char [34]”类型的左值初始化“const char”类型的返回对象
Posted
技术标签:
【中文标题】错误:无法使用“const char [34]”类型的左值初始化“const char”类型的返回对象【英文标题】:error: cannot initialize return object of type 'const char' with an lvalue of type 'const char [34]' 【发布时间】:2021-01-30 06:10:59 【问题描述】:我是 g++ 的新手。
我正在尝试编译这个简单的代码。
但是,有这个错误。
#include <boost/python.hpp>
char const doYouDo( const char* jobs )
return "Hello, I am an embedded engineer.";
BOOST_PYTHON_MODULE( what )
boost::python::def( "doYouDo", doYouDo);
我应该在哪里修复?
我的 g++ 编译命令在这里。
$g++ -fPIC -Wall -I/System/Volumes/Data/Users/whitebear/anaconda3/envs/aiwave/include/python3.6m/ -lboost_python -shared -o whatModule.so what.cpp
【问题讨论】:
看起来你的返回类型应该是char const *
而不是char const
。
【参考方案1】:
"Hello, I am an embedded engineer."
... 是 String Literal,它的类型为 const char[]
,并且您的函数被定义为返回单个常量字符 (char const
),因此您的错误。
你可以做什么:
由于在 C++ 中不能按值返回 C 样式数组,因此可以改为返回指针:
char const* doYouDo( const char* jobs )
return "Hello, I am an embedded engineer.";
或者你也可以使用std::string
,因为它有一个来自const char*
的内置构造函数:
std::string doYouDo( const char* jobs )
return "Hello, I am an embedded engineer.";
【讨论】:
【参考方案2】:const char* const doYouDo( const char* jobs )
return "Hello, I am an embedded engineer.";
【讨论】:
纯代码答案没有用。 社区鼓励在代码中添加解释,而不是纯粹基于代码的答案(参见here)。以上是关于错误:无法使用“const char [34]”类型的左值初始化“const char”类型的返回对象的主要内容,如果未能解决你的问题,请参考以下文章
错误 LNK2019:使用类编译程序时出现无法解析的外部符号错误消息
无法启动应用程序(CreateProcess 错误=87),不能使用缩短类路径解决方法