0

以下は私が遭遇している状況です。クラス (ManipFunction) に含まれるメソッド (manip_A()) を呼び出す必要があり、いくつかのパラメーターはメイン関数で提供されます。これらのパラメーターは、変数 (一部の double) と関数 (つまり func) です。誰か助けてくれませんか?ありがとうございました。

// manip.hpp
class ManipFunction
{
// for example ..
private:
    // Initialization function ...

    // Copy constructors ...

    // Core functions ...
    double manip_A();
    double manip_B();


public:
    // Public member data ...
    ...
    // Constructors ...
    ...
    // Destructors ...
    ...
    // Assignment operator ...
};

.

// manip.cpp
#include"manip.hpp"

// Core functions
double ManipFunction::manip_A() const
{
    // Apply manip_A() to the function and parameters provided in manip_test.cpp
}

double ManipFunction::manip_B() const
{
    // Apply manip_B() to the function and parameters provided in manip_test.cpp
}

// Initialisation
...
// Copy constuctor
...
// Destructor
...
// Deep copy
...
}

.

// manip_test.cpp

#include<iostream>
// Other required system includes

int main()
{
    double varA = 1.0;
    double VarB = 2.5;

    double func (double x) {return x * x};

    double manip_A_Test = ManipFunction::manip_A(func, varA, VarB);

    std::cout << "Result of Manip_A over function func: " << manip_A_Test <<  endl;

        return 0;
}
4

1 に答える 1

2

ここでいくつかの誤解があります。

1) 関数内の関数は正当な C++ ではありません。

int main()
{
    ...
    double func (double x) {return x * x};
    ...
}

これは許可されていません。funcメインの外に移動します。また、末尾;は合法ではありません。

2) ManipFunction メソッドを呼び出すには、ManipFunctionオブジェクトが必要です。あなたのコードはそれを提供していません。

int main()
{
    ...
    ManipFunction mf; // a ManipFunction object
    mf.manip_A(func, varA, VarB); // call the manip_A method on the ManipFunction object
    ...
}

3)パラメータが欲しいと言っていますmanip_Aが、宣言していません。ここではmanip_A2 つのパラメーターを指定しましたが、どちらも typedoubleです。

class ManipFunction
{
    double manip_A(double x, double y);
    ...
};

manip_A4) main 内から呼び出したいと言っていますが、コードではmanip_Aとして宣言していprivateます。publicメインから直接呼び出す場合は、そうする必要があります。

最後に、あなたが投稿したと思われる作成されたコードではなく、実際のコードを投稿する方がおそらく良いと思います。

お役に立てれば

于 2012-11-09T20:56:34.817 に答える