问题描述
int main (void) {
int n = nbegin,v = 1;
double *A;
A = calloc (m * n,sizeof *A);
if (A == NULL) { /* validate EVERY allocation */
perror ("calloc-A");
exit (EXIT_FAILURE);
}
// buildMatrix(); //this fills my matrix with some data
for (int i = 0; i < m; i++)
for (int j = 0; j < n; j++)
A[i * n + j] = v++;
printMatrix (m,n,A);
if (m > n)
square_my_matrix (&A,n);
printMatrix (m,m,A);
}
错误:从“ B **”到“ A **”的无效转换[-fpermisive]
解决方法
由于您拥有A **aa[5]
,所以它是一个指向指针的指针数组,因此您需要三次间接调用才能调用show
方法
(*aa[i])->show();
您也不能在其中存储B**
,因为您只能(隐式)转换为具有单个间接级别的基类。
但是,您不清楚要做什么。更常见的是,您只需要使用一个指针数组,并且只需要两次间接调用即可:
A *a[5];
for (i = 0; i < 5; ++i)
if (i & 1)
a[i] = new A;
else
a[i] = new B;
for (i = 0; i < 5; ++i)
a[i]->show();
很少需要双指针,所以为什么要使用它们?