解除引用指针算术后输入错误?

时间:2014-02-02 03:20:29

标签: c++

我很好奇为什么以下代码不起作用。特别是,编译器似乎将*(result + i)视为gVector3类型而不是float。但是结果是指向浮点数组的指针吗?所以不会解除引用指针返回一个浮点数?您可以假设定义了gVector3和gMatrix3。

    /* returns the column vector at index i */
    gVector3 gMatrix3::getColumn(unsigned int index) const{
    gVector3* result = new gVector3();
        for (int i = 0; i < 3; i++){
            *(result + i) = data[i][index];
        }
        return *result;
    }

1 个答案:

答案 0 :(得分:2)

如果gVector3是一个类,那么它可能会重载operator[],这是你应该使用的。否则,您将对对象本身执行指针运算。试试这个:

(*result)[i] = data[i][index];