gpt4 book ai didi

c++ - 矩阵类 : error: expected primary-expression before ')' token

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:01:16 26 4
gpt4 key购买 nike

我有一个 Matrix4 类派生自/扩展 Matrix 基类(模板类)。模板类的方法在同一个头文件中声明和定义。

我只复制了“Matrix4”类中出现错误的部分。同样的错误发生在第 10 和第 13 行。我看不到任何缺少的变量或参数。我试过去掉括号,但无济于事。

我已经搜索了关于我可能做错了什么的线索,但是我没有在这个网站上的类似问题中找到任何有用的东西......我真的很感激你的帮助。

给出错误的 Matrix4 类:

template<typename T>
class Matrix4 : public Matrix<T, 4>
{
public:
Matrix4() { }

inline Matrix4 InitOrthographic(T left, T right, T bottom, T top, T near, T far)
{
const T width = (right - left);
const T height = (top - bottom);
const T depth = (far - near); //error occurs here

(*this)[0][0] = T(2)/width; (*this)[1][0] = T(0); (*this)[2][0] = T(0); (*this)[3][0] = -(right + left)/width;
(*this)[0][1] = T(0); (*this)[1][1] = T(2)/height; (*this)[2][1] = T(0); (*this)[3][1] = -(top + bottom)/height;
(*this)[0][2] = T(0); (*this)[1][2] = T(0); (*this)[2][2] = T(-2)/depth; (*this)[3][2] = -(far + near)/depth; //and here

(*this)[0][3] = T(0); (*this)[1][3] = T(0); (*this)[2][3] = T(0); (*this)[3][3] = T(1);

return *this;
}

基本矩阵类:

template<typename T, unsigned int D>
class Matrix
{
public:
Matrix() { }
virtual ~Matrix() { }
Matrix(const Matrix& other) { *this = other; }

inline Matrix InitIdentity(); //defined in the same header, but left out here to save space
inline Matrix InitTranslation(const Vector<T, D-1>& r);
inline Matrix& operator=(const Matrix& rhs);
inline Matrix operator*(const Matrix<T,D>& r) const;

inline const T* operator[](int index) const { return m[index]; }
inline T* operator[](int index) { return m[index]; }

private:
T m[D][D];
};

基类“Matrix”中没有错误,只有派生的“Matrix4”类中没有错误。

如果代码看起来很眼熟,那是因为我在关注 Youtube tutorial .

最佳答案

找到解决方案!谢谢您的帮助!

我将参数变量名称从“far”和“near”更改为“m_near”和“m_far”,现在它可以工作了。我认为它可能与代码中某处的#define 或类中的其他方法发生冲突。

它编译并运行没有错误。我找不到导致冲突/错误的原始问题的原因。更改似乎已经解决了问题,所以我认为没有必要看得太久或太难。

const,在方法中的变量声明之前,似乎目前还没有产生任何不良影响,所以我会保留它。

Matrix4 类中的固定代码:

inline Matrix4<T> InitOrthographic(T left, T right, T m_near, T m_far, T bottom, T top)
{
const T width = right - left;
const T height = top - bottom;
const T depth = m_far - m_near;

(*this)[0][0] = T(2)/width; (*this)[1][0] = T(0); (*this)[2][0] = T(0); (*this)[3][0] = -(right + left)/width;
(*this)[0][1] = T(0); (*this)[1][1] = T(2)/height; (*this)[2][1] = T(0); (*this)[3][1] = -(top + bottom)/height;
(*this)[0][2] = T(0); (*this)[1][2] = T(0); (*this)[2][2] = T(-2)/depth; (*this)[3][2] = -(m_far + m_near)/depth;
(*this)[0][3] = T(0); (*this)[1][3] = T(0); (*this)[2][3] = T(0); (*this)[3][3] = T(1);

return *this;
}

关于c++ - 矩阵类 : error: expected primary-expression before ')' token,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33189491/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com