繁体   English   中英

没有已知的转换'float(MyClass :: *)'到'float(*)'

[英]no known conversion 'float (MyClass::*)' to 'float (*)'

我应该写一个程序,该程序必须生成一个三角函数,使用向前和向后划分的差来计算导数,并区分三角函数。 所以,我写了一些代码,只有一个问题:

include \\ MyClass.h | 12 |注意:参数1从'float(MyClass :: )(int,float,float)'到'float( )(int,float,float)'|的未知转换

我的代码:

main.cpp

#include <iostream>
#include "MyClass.h"
using namespace std;

int main()
{
    MyClass object (3,4,2,0.1);

    for (float i=object.x; i<2.5; i+=0.01)
    {
        cout << object.Triangle(10, 3.14, i) << " ";
    }

    cout << "////////////////////";

    for (float i=object.x; i<2.5; i+=0.01)
    {
        cout << object.Derivative(&object.Triangle, i, object.con) << " ";
    }
}

MyClass.h

#ifndef MYCLASS_H
#define MYCLASS_H


class MyClass
{
    public:
        MyClass();
        MyClass(int k_max, float omega, float x, float con);
        ~MyClass();
        float Triangle (int k_max, float omega, float x);
        float Derivative (float (*w) (int k_max, float omega, float x), float var, float con);
        float DerivativeCntr (float (*w) (int k_max, float omega, float x), float var, float con);
        int k_max;
        float omega, x, result, con;
};

#endif // MYCLASS_H

MyClass.cpp

#include "MyClass.h"

MyClass::MyClass() {}
MyClass::~MyClass() {}

MyClass(int K_max, float Omega, float X, float Con)
{
    k_max=K_max;
    omega=Omega;
    x=X;
    con=Con;
}

///////////////////////////////////////////////

float Triangle (int k_max, float omega, float x)
    {
        result=0;

        for int (i=0; i<=k_max; i++)
        {
            result += ( 8*pow(-1, i)*(sin((2*i+1)*omega*x ) / ( pow(2*i+1, 2) * pow(M_PI, 2) )
        }
        return result;
    }

///////////////////////////////////////////////

float Derivative (float (*w) (int k_max, float omega, float x), float var, float con)
    {
        float result = (w(10, 3.14, var+con) - w(10, 3.14, var))/var;
        return result;
    }

///////////////////////////////////////////////

float DerivativeCntr (float (*w) (int k_max, float omega, float x), float var, float con)
    {
        float result=(w(10, 3.14, var)-w(10, 3.14, var-con))/2*var;
        return result;
    }

非常感谢您的帮助,谢谢!

编辑:我已经使该程序正常工作,但是建议使用一个类,并且需要使用指向该函数的指针。 那是我的非面向对象的代码: https : //ideone.com/mtPLAo

您的代码中有几个语法性质的错误。

MyClass.h ,更改为

float Derivative (float *w, int k_max, float omega, float x, float var, float con);
float DerivativeCntr (float *w, int k_max, float omega, float x, float var, float con);

MyClass.cpp ,所有成员函数都应以MyClass::作为前缀,并且对于接受参数的构造函数也应相同。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM