Ниже ситуация, с которой я сталкиваюсь.
Мне нужно вызывать метод (а именно, _podia_A ()), содержащийся в классе (ManipFunction), некоторые параметры предоставляются в основной функции. Эти параметры являются переменными (некоторые удваиваются) и функцией (а именно 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;
}
ОК, несколько недоразумений здесь.
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_A
два параметра, оба типа double
,
class ManipFunction
{
double manip_A(double x, double y);
...
};
4) Хотя вы говорите, что хотите позвонить manip_A
изнутри main, в вашем коде вы объявили manip_A
как private
, Это должно быть public
если вы хотите позвонить прямо с главного.
Наконец, я бы просто сказал, что, вероятно, лучше размещать свой реальный код, а не вымышленный код, который, я думаю, вы опубликовали.
Надеюсь это поможет
Других решений пока нет …