C++ 多维数组类错误

C++ 多维数组类错误,c++,multidimensional-array,compiler-errors,operators,C++,Multidimensional Array,Compiler Errors,Operators,在我添加rot()函数之前,该代码运行良好。是的,它在头文件中正确声明。我用简单的1.0f值替换了所有的方程,但出现了相同的错误。这向我暗示,它与声明Matrix2f rot;有关。。。有人知道这是什么问题吗 #include "Matrix2f.h" #include <cmath> #include <iostream> #include "Vector2f.h" Matrix2f::Matrix2f(){ m[0][0]= 1.0f; m[0][1

在我添加
rot()
函数之前,该代码运行良好。是的,它在头文件中正确声明。我用简单的1.0f值替换了所有的方程,但出现了相同的错误。这向我暗示,它与声明Matrix2f rot;有关。。。有人知道这是什么问题吗

#include "Matrix2f.h"
#include <cmath>
#include <iostream>
#include "Vector2f.h"

Matrix2f::Matrix2f(){

    m[0][0]= 1.0f;    m[0][1]= 0.0f;
    m[1][0]= 0.0f;    m[1][1]= 1.0f;

}

Vector2f Matrix2f::rot(float theta, Vector2f vec){

     Matrix2f rot;

        rot[0][0]= cosf(theta);  rot[0][1]= -sinf(theta);
        rot[1][0]= sinf(theta);  rot[1][1]= cosf(theta);

        float tx = ((rot[0][0]*vec.getX())+(rot[0][1]*vec.getY()));
        float ty = ((rot[1][0]*vec.getX())+(rot[1][1]*vec.getY()));


    return Vector2f(tx, ty);

}

void Matrix2f::printMat(){

    std::cout << "| " << m[0][0] << "    " << m[0][1] << " |" << std::endl;
    std::cout << "| " << m[1][0] << "    " << m[1][1] << " |" << std::endl;
}
它为从第17行到第21行的每一行提供两次相同的代码。。。
非常感谢您的帮助:)

您需要访问对象中的多维数组,即m。为此,请使用rot.m作为多维数组。

首先,在“rot”方法中不需要“Matrix2f rot”对象

您可以将方法更改为:

Vector2f Matrix2f::rot(float theta, Vector2f vec){

    float tx = (( cosf(theta) * vec.getX())+( ( -sinf(theta) ) * vec.getY()));
    float ty = (( sinf(theta) * vec.getX())+( cosf(theta) * vec.getY()));

    return Vector2f(tx, ty);
}
除非您想重置“rot”(我假设为“float m[2][2])中的成员变量“m”) 然后您可以使用:

Vector2f Matrix2f::rot(float theta, Vector2f vec){

    m[0][0]= cosf(theta);  m[0][1]= -sinf(theta);
    m[1][0]= sinf(theta);  m[1][1]= cosf(theta);

    float tx = (( m[0][0] * vec.getX())+( m[0][1] ) * vec.getY()));
    float ty = (( m[1][0] * vec.getX())+( m[1][1] * vec.getY()));

    return Vector2f(tx, ty);

}

除非您的类(Matrix2f)提供了重写运算符[]的实现,否则您不能使用rot[][]。

看起来是rot.m[0][0]?在
Matrix2f
中显示
运算符[]的重载。这当然是问题所在。但是构造函数应该自己解决这个问题。在这种情况下,任何声明的矩阵都初始化为单位矩阵。我不是用多维数组来包装多维数组。谢谢,我似乎把整个过程复杂化了。
Vector2f Matrix2f::rot(float theta, Vector2f vec){

    m[0][0]= cosf(theta);  m[0][1]= -sinf(theta);
    m[1][0]= sinf(theta);  m[1][1]= cosf(theta);

    float tx = (( m[0][0] * vec.getX())+( m[0][1] ) * vec.getY()));
    float ty = (( m[1][0] * vec.getX())+( m[1][1] * vec.getY()));

    return Vector2f(tx, ty);

}