2014-11-02 3 views
0

Здравствуйте, у меня есть небольшая проблема, и я был бы счастлив, если бы вы могли сказать мне, как ее исправить. Так у меня есть функция, которая является реализация так:Функция, возвращающая параметры C++

int* getMytree() 

Функция должна вернуть три переменные. Переменные определяются как общедоступные.

Как вернуть три параметра?

+0

Если вам нужен мой совет лед, функция должна быть модульной, чтобы вычислять один результат. Вы можете использовать передачу по ссылке, чтобы изменить переданные параметры, если хотите. –

+0

Проход по ссылочному подходу выглядит как 'void getMytree (int & a, int & b, int & c);' –

+0

@Mahmoud Fayez: если эти параметры связаны, шансы высоки, что они разделяют большое количество вычислений и разделение на отдельные функции –

ответ

2

Извините, нет возможности явно возвращать три значения из функции, поскольку функция может возвращать только одно значение. Однако вы могли бы сделать две вещи

1) Инкапсулируйте эти три параметра в структуре и затем создайте функцию для возврата этой структуры.

struct Book 
{ 
int pages; 
std::string name; 
std::string author 
}; 

Book myFunc(); // This example is just for simplicity. 

2) Более просто передать указатели/ссылки на три параметра, которые вы хотите изменить.

void myFunc (int& page, std::string &name, std::string &author); 
+0

Зачем определять структуру по имени 'book' и typedef это для' Book'? Кажется немного избыточным для меня. – user2079303

+0

Да, это избыточно. Я сказал, что пример просто для того, чтобы уточнить, что мой вопрос задан ... – ravi

+0

@NeilKirk удален ... – ravi

5

Помимо упаковки трех переменных внутри struct

Вы можете вернуть std::tuple

std::tuple<int, int, int> getMytree(int id) 
{ 
    // .... 
    // a= , b= c= 
    return std::make_tuple(a,b,c); 
} 

И затем использовать std::tie с общественных переменных, как:

std::tie(var1, var2, var3) = getMytree() ; 
+1

Вы не упомянули, как должен выглядеть оператор возврата? return std :: make_tuple (1,2,3); –

+0

@ rupesh.yadav Хорошая точка, обновленная, спасибо – P0W

Смежные вопросы