代码之家  ›  专栏  ›  技术社区  ›  whitebear

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

c++
  •  0
  • whitebear  · 技术社区  · 4 年前

    我是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);
    }
    

    我应该在哪里修理?

    $g++ -fPIC -Wall -I/System/Volumes/Data/Users/whitebear/anaconda3/envs/aiwave/include/python3.6m/ -lboost_python -shared -o whatModule.so what.cpp
    
    2 回复  |  直到 4 年前
        1
  •  5
  •   DarthQuack    4 年前
    "Hello, I am an embedded engineer." 
    

    ... 是一个 String Literal ,它有一种 const char[] 函数被定义为返回单个常量字符( char const

    您可以做什么:

    由于C++中不能用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
  •  1
  •   Ali Razmkhah    4 年前
    const char* const doYouDo( const char* jobs ) {
        return "Hello, I am an embedded engineer.";
    }