xcode — вызов методов, содержащихся в классе в C ++ с переменными и функциями в главном

Ниже ситуация, с которой я сталкиваюсь.
Мне нужно вызывать метод (а именно, _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;
}

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 если вы хотите позвонить прямо с главного.

Наконец, я бы просто сказал, что, вероятно, лучше размещать свой реальный код, а не вымышленный код, который, я думаю, вы опубликовали.

Надеюсь это поможет

2

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]