const char *&作为函数参数C ++

时间:2013-11-25 14:54:41

标签: c++ function reference const

我在使用Visual Studio 2010解决运行时问题C ++时遇到了困难,但编译得很好。

我在API(来自另一个DLL)的类中有一个带有此签名的函数:

ReturnCode GetValue(const char* &value) const;

我用它来打电话:

ReturnCode Test::getStuff(const char* &value)
{
    ValueGetter valueGetter = myClass.GetValueGetter();
    ReturnCode returnCode = valueGetter.GetValue(value);
    return returnCode;
}

那叫做

const char* tempStr;
getStuff(tempStr);

我所看到的是,在调用valueGetter.GetValue(value)之后,在行上正确设置了值。但是,一旦我再次踩了一下这个功能的范围,那么这个价值就会变得胡言乱语。我做错了什么,我该如何正确地做到这一点?希望不必分配内存,复制值,我将在以后删除。

1 个答案:

答案 0 :(得分:0)

看起来它返回一个指向超出范围的变量的指针。 ValueGetter::GetValue的本地变量或ValueGetter的数据成员(注意valueGetter返回时getStuff超出范围)。

在后一种情况下,这应该有效:

ReturnCode Test::getStuff(std::string &value)
{
    ValueGetter valueGetter = myClass.GetValueGetter();
    const char* tempStr;
    ReturnCode returnCode = valueGetter.GetValue(tempStr);
    value = tempStr;
    return returnCode;
}


std::string tempStr;
getStuff(tempStr);