Fehler in Funktionsdefinition ?



  • Ich habe folgende Funktion

    double maxArrayValue(double * Array, int iArraySize)
    {
    	double maxValue = -1e-300; // ersetzen durch double_max
    	for (long i=0; i < iArraySize; i++)
    	{			
    		maxValue = maxValue(maxValue, Array[i]);
    	}
    	return maxValue;
    }
    

    für die mir der Compiler (Visual Studio 2005)
    immer folgende Fehlermeldung rauswirft, die ich nicht verstehe

    error C2064: Ausdruck ergibt keine Funktion, die 2 Argumente übernimmt

    Der Fehler tritt allerdings nicht bei der Deklaration sondern bei der Benutzung auf. Das wäre bei mir dann etwas in dieser Art

    int DataCount = LaserDynamics.DataCount();
    	double minGain = minArrayValue(LaserDynamics.GainArray, DataCount);
    

    Was will mir der compiler nun sagen?



  • pospiech schrieb:

    double maxArrayValue(double * Array, int iArraySize)
    {
    	double maxValue = -1e-300; // ersetzen durch double_max
    	for (long i=0; i < iArraySize; i++)
    	{			
    		maxValue = maxValue(maxValue, Array[i]);
    	}
    	return maxValue;
    }
    

    In Zeile drei ist "maxValue" ein double.
    In Zeile sechs rufst du eine Funktion mit dem selben Namen auf.



  • Dein Compiler will Dich darauf aufmerksam machen, dass maxValue in Deiner maxArrayValue eine Variable des Typs double ist, aus der man den von Dir in Zeile 6 gewünschten call nicht bauen kann.

    greetz, Swordfish



  • Wie du es löst? maxValue siht nach einer selbst geschriebenen Funktion aus. Diese hast du ja sicherlich in einen passenden namespace gepackt. Also einfach:

    maxValue = pospiechs_namespace::maxValue(maxValue, Array[i]);
    

    Gruß
    Don06



  • oder so? 🙂

    double maxArrayValue(double * Array, int iArraySize)
    {
        return *std::max_element(Array, Array + iArraySize);
    }
    

Anmelden zum Antworten