1
你能告訴爲什麼視覺工作室編譯這段代碼(在郵件的末尾)就好了,但G ++給我一個錯誤:G ++ VS Visual Studio中
chapter8_1.cpp:97:50: error: macro "minor" passed 3 arguments, but takes just 1
chapter8_1.cpp:136:36: error: macro "minor" passed 3 arguments, but takes just 1
chapter8_1.cpp:97:11: error: function definition does not declare parameters
chapter8_1.cpp: In member function ‘double Matrices::determinant(double**, int)’:
chapter8_1.cpp:136:17: error: ‘minor’ was not declared in this scope
現在這兩個功能都在一個struct
,但如果我編譯他們在沒有struct
(簡單獨立的函數),然後g + +給我沒有錯誤,程序工作正常。該程序旨在計算任何方陣的行列式。
代碼:
struct Matrices
{
.......
double **minor(double **matrix, int dim, int row) // row stands for the number of column that we are expanding by
{
int dim2 =--dim;
double **minor2;
minor2=new double*[dim2]; // creates minor matrix
for(int i=0; i<dim2; ++i)
minor2[i]=new double[dim2];
for(int hhh=0; hhh<dim2; ++hhh)
{
int bbb=0;
for(int aaa=0; aaa<dim2+1; ++aaa) // initializing the minor matrix
{
if (aaa==row)
continue;
else
{
minor2[hhh][bbb]=matrix[hhh+1][aaa];
++bbb;
}
}
}
return minor2;
}
double determinant(double **mat, int dim)
{
double det=0;
if(dim==1)
det=mat[0][0];
if(dim==2)
det=mat[0][0]*mat[1][1]-mat[0][1]*mat[1][0];
else
{
double ***setOFmat; // pointer that points to minors
setOFmat=new double**[dim];
for (int ddd=0; ddd<dim; ++ddd) // ddd represents here the number of column we are expanding by
setOFmat[ddd]=minor(mat, dim, ddd);
for (int ddd=0; ddd<dim; ++ddd) // ddd srepresents the same here
{
det= det + pow(-1.0,ddd)*mat[0][ddd]*determinant(setOFmat[ddd], dim-1); // actual formula that calculates the determinant
}
}
return det;
}
在一個struct?你是說在一個班級? –
由於錯誤消息提到了名爲'minor'的**宏**,因此似乎有一個具有該名稱的預處理器宏。嘗試重命名你的函數,看看它是否更好。 –
或者至少用大寫來定義你的宏。 – Aesthete