错误:无法使用“const char [34]”类型的左值初始化“const char”类型的返回对象

whi*_*ear 1 c++

我是 g++ 的新手。

我正在尝试编译这个简单的代码。

然而却出现了这个错误。

错误:无法使用“const char [34]”类型的左值初始化“const char”类型的返回对象

#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);
}
Run Code Online (Sandbox Code Playgroud)

我应该在哪里修复?

我的 g++ 编译命令在这里。

$g++ -fPIC -Wall -I/System/Volumes/Data/Users/whitebear/anaconda3/envs/aiwave/include/python3.6m/ -lboost_python -shared -o whatModule.so what.cpp
Run Code Online (Sandbox Code Playgroud)

a.L*_*.Li 5

"Hello, I am an embedded engineer." 
Run Code Online (Sandbox Code Playgroud)

... 是一个String Literal,它的类型为 ,const char[]并且您的函数被定义为返回单个常量字符 ( char const) ,因此您的错误。

你可以做什么:

由于无法在 C++ 中按值返回 C 样式数组,因此可以返回指针:

char const* doYouDo( const char* jobs ) {
    return "Hello, I am an embedded engineer.";
}
Run Code Online (Sandbox Code Playgroud)

或者您也可以使用,std::string因为它有一个内置构造函数const char*

std::string doYouDo( const char* jobs ) {
    return "Hello, I am an embedded engineer.";
}
Run Code Online (Sandbox Code Playgroud)