Форум программистов, компьютерный форум CyberForum.ru

Опциональный ссылочный аргумент функции - C++

Восстановить пароль Регистрация
 
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
23.02.2014, 09:46     Опциональный ссылочный аргумент функции #1
Некоторые аргументы функции можно сделать опциональными, просто поставив значение по умолчанию, а затем проверяя, изменилось ли оно :
C++
1
2
3
4
5
6
7
void someFoo(int important, int *additional = NULL)
{
if (additional != NULL)
{
//do someFoo
}
}
Можно ли сделать так же для ссылочного типа?
C++
1
2
3
4
5
6
7
void someFoo(int important, int &additional) // ???
{
if (additional) //  ??? -> PROFIT
{
//do someFoo
}
}
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
23.02.2014, 09:46     Опциональный ссылочный аргумент функции
Посмотрите здесь:

Класс как аргумент функции C++
C++ аргумент функции - массив строк
C++ локальные переменные в функции и её аргумент
Безымянный аргумент функции C++
C++ Передача функции в аргумент
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
25.02.2014, 21:07  [ТС]     Опциональный ссылочный аргумент функции #21
DrOffset, не обладаю C++11 компилятором :'( Всё ещё сижу на VS2008, хотя давно стоит VS2012. Такие уж условия свыше
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
DrOffset
6423 / 3797 / 878
Регистрация: 30.01.2014
Сообщений: 6,585
25.02.2014, 21:12     Опциональный ссылочный аргумент функции #22
Цитата Сообщение от nexen Посмотреть сообщение
DrOffset, не обладаю C++11 компилятором
Так это не проблема, можно попробовать все фичи здесь.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
26.02.2014, 07:08  [ТС]     Опциональный ссылочный аргумент функции #23
DrOffset,
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
#include <iostream>
#include <string>
using namespace std;
 
string Foo(string && s = string(""), char && x = 'G')
{
    s += x;
    if (x == 'A')
    {
        return "";
    }
    Foo(s, (char)((int)x - 1));
    if (x == 'G')
    {
        
        return s; 
    }
    return "";
}
 
int main() {
    cout << Foo();
    return 0;
}
Compiling the source code....
$g++ -std=c++11 main.cpp -o demo -lm -pthread -lgmpxx -lgmp -lreadline 2>&1
main.cpp: In function 'std::string Foo(std::string&&, char&&)':
main.cpp:12:19: error: cannot bind 'std::string {aka std::basic_string<char>}' lvalue to 'std::string&& {aka std::basic_string<char>&&}'
Foo(s, (int)x - 1);
^
main.cpp:5:8: error: initializing argument 1 of 'std::string Foo(std::string&&, char&&)'
string Foo(string && s = string(""), char && x = 'G')
^
http://www.compileonline.com/compile_cpp11_online.php
Tulosba
:)
Эксперт C++
4378 / 3221 / 297
Регистрация: 19.02.2013
Сообщений: 9,044
26.02.2014, 07:56     Опциональный ссылочный аргумент функции #24
nexen,
C++
1
    Foo(std::move(s), (char)((int)x - 1));
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
26.02.2014, 17:17     Опциональный ссылочный аргумент функции
Еще ссылки по теме:

C++ Произвольный объект как аргумент функции
C++ Не читается аргумент функции
C++ Auto как аргумент функции

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
26.02.2014, 17:17  [ТС]     Опциональный ссылочный аргумент функции #25
Tulosba, и правда работает.
DrOffset, magic
Yandex
Объявления
26.02.2014, 17:17     Опциональный ссылочный аргумент функции
Ответ Создать тему
Опции темы

Текущее время: 10:36. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru