Это мой первый вопрос здесь, и в первый раз я не смог найти решение проблемы C ++ онлайн, просто посмотрев вокруг.Я относительно неопытен в этой области и не уверен, что имеет значение, поэтому я просто опубликую то, что считаю полезным.
Я использую SDL для создания кроссплатформенного приложения.Я использую MinGW 4.6.1 в Windows 7 (64-разрядная версия), а также настройку Ubuntu на другом компьютере.
Он прекрасно компилируется в Ubuntu (используя g ++) без каких-либо жалоб, но я получаюследующая ошибка, когда я пытаюсь скомпилировать на моей машине Windows с g ++:
...matrix.cpp:77:17: error: expected primary-expression before '/' token
...matrix.cpp:78:11: error: expected primary-expression before '/' token
...matrix.cpp:79:17: error: expected primary-expression before ')' token
...matrix.cpp:79:28: error: expected primary-expression before ')' token
...matrix.cpp:80:19: error: expected primary-expression before ')' token
...matrix.cpp:80:30: error: expected primary-expression before ')' token
Насколько я могу судить, в этой функции нет ничего особенного (тем более что она прекрасно компилируется в моей Ubuntu-setup):
Matrix *Matrix::projection(float near, float far, float top, float right) {
x1 = near/right;
y2 = near/top;
z3 = -(far+near)/(far-near);
z4 = -(2*far*near)/(far-near);
w3 = -1.0;
y1 = z1 = w1 =
x2 = z2 = w2 =
x3 = y3 =
x4 = y4 = w4 = 0.0;
return this;
}
Если это имеет значение, вот класс Matrix:
class Matrix { // row-major matrix
public:
float x1, y1, z1, w1, x2, y2, z2, w2, x3, y3, z3, w3, x4, y4, z4, w4;
Matrix();
Matrix (float a, float b, float c, float d, float e, float f, float g, float h, float i, float j, float k, float l, float m, float n, float o, float p);
Matrix (float *f);
Matrix *identity();
Matrix *translation(float x, float y, float z);
Matrix *rotation(float a, float i, float j, float k);
Matrix *rotation(Quaternion q);
Matrix *projection(float near, float far, float top, float right);
Matrix operator*(Matrix m);
void operator*=(Matrix m);
Matrix operator/(float f);
void operator/=(float f);
Matrix operator*(float f);
void operator*=(float f);
void operator=(float *f);
float *getArray();
};