функция ссылки из другой функции - PullRequest
0 голосов
/ 19 марта 2010

Я забыл, как ссылаться на другую функцию в функцию в C ++? В Python он объявлен как класс, чтобы я мог его использовать.

double footInches(double foot)
{
 double inches = (1.0/12.00) * foot;
 return inches;
}

double inchMeter(double inch)
{
 double meter = 39.37 * (footInches(inch));
 return meter;
}

Я хочу указать футы в дюймах.

изм

вот основная программа

int main()
{
 double feet, inch, meter, x = 0;

 cout << "Enter distance in feet to convert it to meter: " << endl;
 cin >> x;

 cout << inchMeter(x);

 return 0;

Я думаю, что последняя строка не верна. сначала я хочу получить x в футах, затем перейти к inchMeter и вернуть ответ из inchMeter.

Ответы [ 2 ]

1 голос
/ 19 марта 2010

Под ссылкой вы подразумеваете звонок?
Вы правильно вызываете функцию в своем примере, но вам не нужны окружающие скобки.

Так просто вот так:

double inchMeter(double inch)
{
 double meter = 39.3700787 * footInches(inch);
 return meter;
}

Если ваши функции существуют в разных файлах .cpp или вам нужно сослаться на функцию, которая будет определена позже, вы можете использовать предварительное объявление.

Пример:

a.cpp:

double footInches(double foot)
{
 double inches = foot * 12.0;
 return inches;
}

b.cpp:

double footInches(double foot); //This is a forward declaration

double inchMeter(double inch)
{
 double meter = 39.3700787 * footInches(inch);
 return meter;
}
0 голосов
/ 19 марта 2010

Традиционный способ «ссылки» на произвольную функцию в C - это использование указателя на функцию. Здесь вам действительно не нужно, потому что вы не собираетесь изменять реализацию функции toinches во время выполнения, но если вам нужна «ссылка на функцию», вы делаете это так:

//Declare a function type that does what you want.
typedef double (*inch_converter_t)(double foot)

double footInches(double foot)
{
 double inches = (1.0/12.00) * foot;
 return inches;
};

//Pass a function pointer to another function for use.
double inchMeter(double inch, inch_converter_t converter)
{
 double meter = 39.37 * (converter(inch)); //Making a function call with the pointer.
 return meter;
}

int main()
{
    inch_converter_t myConverter = footInches;
    doube result = inchMeter(42, myConverter); //Call with function pointer.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...