码迷,mamicode.com
首页 > 编程语言 > 详细

C++ const char *返回值问题

时间:2020-02-08 12:03:45      阅读:318      评论:0      收藏:0      [点我收藏+]

标签:turn   结果   地方   通过   rac   定义   ons   cout   遇到   

今天写代码,遇到一个const char *返回值的问题,记录一下

问题场景:我写了一个动态库,有个函数声明如下:

virtual const char * RGetAppToken(char *appToken, const char *userAccount, const char *userId) = 0;

函数定义如下:

const char * HttpRequestImpl::RGetAppToken(char * appToken, const char * userAccount, const char * userId)
{
    std::string message;
    
    // 省略中间逻辑...
   message = GetAppToken(); return message.c_str(); }

然后通过控制台程序调用改动态库函数如下:

std::string message;
memset(appToken, 0, 256);
message = httpRequest->RGetAppToken(appToken, userAccount.c_str(), accountId.c_str());
cout << "message: " << message;
cout << "\tappToken: " << appToken << endl;

结果在这里遇到一个奇怪的问题,当函数定义中 std::string message; 这句话只有被放在函数开头,或者直接返回字符串字面量时,调用处才能拿到返回值。

如果该句代码被放在函数中间其他地方,或和其他变量一起定义(std::string str, message),或直接写成 std::string message = GetAppToken(),调用处都拿不到返回值。

学识浅薄,不得其解,哪位前辈如有答案,还请不吝赐教。

C++ const char *返回值问题

标签:turn   结果   地方   通过   rac   定义   ons   cout   遇到   

原文地址:https://www.cnblogs.com/jixiaohua/p/12275759.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!