invalid conversion from `long int' to `long int (*)[2]'
-
Hallo Ihr,
also ich habe folgenden header geschrieben, namens ai.h:
#include<iostream> using namespace std; extern const int N; void mat_mat_prod(long A [N][N], long B [N][N], long C [N][N]) { int i,j,k; for(int i=0;i<N;i++) for(int j=0;j<N;j++) C[i][j] = 0; for(int k=0;k<N;k++) C[i][j] +=A[i][k]*B[k][j]; }
Und folgende CPP-File:
#include<iostream> extern const int N=2; #include "ai.h" using namespace std; int main() { long A[N][N] ={{12},{45}}; long B[N][N] ={{12},{45}}; long C[N][N]; mat_mat_prod(A[N][N],B[N][N],C[N][N]); system("Pause"); return 0; }
Nun kommt folgende Fehlermeldung:
10 C:\cygwin\home\User\ProgII\uebung02_2505251\Aufgabe1.cpp invalid conversion from `long int' to `long int (*)[2]'
Weiß jemand zufällig an was das hängen könnte bzw. was ich falsch gemacht habe?
MfG XanderCage
-
XanderCage schrieb:
mat_mat_prod(A[N][N],B[N][N],C[N][N]);
Das hat nicht nur undefiniertes Verhalten, sondern damit übergibst du 3 longs. Der Aufruf muss deshalb wie folgt aussehen
mat_mat_prod(A,B,C);
nochwas:
Definiere keine Funktionen in Header Dateien, sofern sie nicht inline oder Templates sind.
Lass das extern bei der Definition von N weg, also// .cpp const int N=2;
Ansonsten kannst du Konstanten auch direkt in der Header Datei definieren.
-
Und lass den Teil weg:
int i,j,k;
Du deklarierst die Variablen nämlich (lokal) in den for schleifen, damit ist die erste deklaration unnötig.