C ++指针返回NULL

时间:2011-11-23 03:57:51

标签: c++

尝试从函数返回更新指针。仅仅为了背景,这是一个像stl向量一样的模板。这是返回功能。

    ////////////////////////////////////////////////////////////////////////////////
//removes an item from the array
const T& remove(int pos)
{
    if(pos > cnt)
        pos = cnt;
    if(pos < 0)
        pos = 0;
    static T v;
    for(int i,k = 0; i < cnt; i++,k++)
    {
        if(i == pos)
        {
            v = element[i];
            i++;
        }
        else
            element[k] = element[i];
    }
    cnt--;
    return v;
}

/////////////////////////////////////////////////////////////////////////

我正在尝试更新的指针变量:

TVector<Member*> members;
Member* backmember;

backmember = members.remove(members.size()-1);

但是backmember总是返回null。我确信我错过了一些简单的东西,只是不确定是什么。有任何想法吗?如果您有任何问题,请提前告知我们。

2 个答案:

答案 0 :(得分:6)

我认为这不会初始化i

for(int i,k = 0; i < cnt; i++,k++)

尝试将其更改为此并进行测试:

for(int i = 0,k = 0; i < cnt; i++,k++)

答案 1 :(得分:2)

for(int i,k = 0; i < cnt; i++,k++)

i,k使用逗号运算符,它按顺序计算参数,返回最后一个的结果。所以这意味着“声明我,然后声明k并将其设置为0”

i未设置。所以很可能它从内存中得到一些大的随机值而你的循环永远不会运行