Unklare Compilerfehlermeldung



  • Ich habe folgenden Code geschrieben:

    class Fourier {
    
    	public:
    	int d;
    
    	double* combinations;
    	int combinationsLength;
    	...
    	void generateHyperbolicX();
    	void generateCombinations( double* combinations, int &index, double* ks, int k, int depthIndex, double prod );
    

    Und das ist die Implementation:

    void Fourier::generateHyperbolicX()
    {
    	...
    
    	combinations = new double[d*combinationsLength];
    	double* ks = new double[d];
    	for( int k = -K; k < K; ++k ) {
    		ks[0] = k;
    		generateCombinations( combinations, 0 /*index*/, ks, k, 0 /*depthIndex*/, 1.0 /*prod*/ );
    	}
    }
    
    void Fourier::generateCombinations( double* combinations, int &index, double* ks, int k, int depthIndex, double prod )
    {
    	...
    }
    

    Wenn ich das kompiliere, erhalte ich folgende Fehlermeldung:

    Fourier.cpp: In member function ‘void Fourier::generateHyperbolicX()’:
    Fourier.cpp:139:90: error: no matching function for call to ‘Fourier::generateCombinations(double*&, int, double*&, int&, int, double)’
    Fourier.h:55:7: note: candidate is: void Fourier::generateCombinations(double*, int&, double*, int, int, double)
    make: *** [KRR.o] Error 1

    Ich nix verstehen, weil für misch sieht rischtisch aus.



  • Der zweite Parameter der Funktion ist eine Referenz, das heißt ein Verweis auf eine existierende Variable. Dort mußt du eine Variable angeben, kein Literal (Konstante).
    (alternativ änderst du die Definition des Parameters zu int index - hängt ganz davon ab, was du mit dem PArameter machen willst)



  • Der zweite Parameter von generateCombinations sollte entweder int index oder const int& index sein. Desweiteren würde ich das Array durch einen std::vector ersetzten.



  • Danke für die schnelle Antworten. 👍


Anmelden zum Antworten