[错误记录]关于指针传递获得数据使用错误问题....

来源:互联网 发布:vue.js 视频教程 编辑:程序博客网 时间:2024/05/20 04:09
关于指针传递获得数据问题
为什么以下函数通过一个指针传入函数中获得数据, 返回的确是无数据的变量?
bool Scene::ResultSelectScene::getPlayerSaveData( LogData* logData )
{
    // 保证数据已经获得
    if ( !mCurPlayerLogData.empty() ){
            // 错误... 这里试图把成员变量的指针传递给logData...
            logData = &mCurPlayerLogData;
            return true;
    }else{
        logData = 0;
        return false;
    }
}

原因是我在调用时的那个LogData不是声明一个NULL指针...
而用了一个变量...
 如下
// 进入保存场景
// 获得当前场景中的玩家记录数据
LogData logData;
// 1 判断用户选择条件是否满足
// 是否成功获得?  ERROR: 这样的用法错误...
bool isGet = mRenderWnd->getCurScene()->getPlayerSaveData(&logData);


这里把logData当作指针传入成员函数.. 再获得指针....
当调用函数的时候,这里首先获得了变量logData的地址... 再用一个指针指向它... 之后又用传入类的成员变量指针赋予这个指针... 所以不影响传入变量...
我个人的想法是这样...
=  = 这样使用的错误理由是什么? 语言上的解释是什么?上面那个形参使用的指针式logData是临时的么?


后来就改成用引用传递了...

 bool Scene::ResultSelectScene::getPlayerSaveData( LogData& logData )
{
    // 保证数据已经获得
    if (  !mCurPlayerLogData.empty()  ){
            // 修整, 重载赋值操作符
            logData = mCurPlayerLogData;
            return true;
    }else{
        return false;
    }
}
一时脑残还是弄得不大明白...OTL 知道的人指教一下具体原因....某人经常在简单的基础问题上脑残...
原创粉丝点击