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

С++ для начинающих

Войти
Регистрация
Восстановить пароль
 
 
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
#1

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

23.02.2014, 09:46. Просмотров 868. Ответов 24
Метки нет (Все метки)

Некоторые аргументы функции можно сделать опциональными, просто поставив значение по умолчанию, а затем проверяя, изменилось ли оно :
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++
Есть три функции: void MainMenu(); void MainMenu_MilkMenu(); bool ErrorMenu(void (*pf)()); Все прототипы находятся в...

Не читается аргумент функции - C++
void recursReverse(char* str, size_t len) { static size_t len2 = len; while (len2 > 1) { std::swap(*str, *(str + len2 - 1)...

Безымянный аргумент функции - C++
функция принимает аргумент, но у него нет имени void f(int) { cout << "Hello world!"; } int main() { int n =...

Непонятный аргумент функции - C++
Кто-нибудь может подсказать, что принимает такая функция в качестве аргумента? void foo(int (**i)(double)) { ..... }

Аргумент в виде шаблонной функции - C++
void Function(любая_функция_с_одним_параметром){} Как при помощи шаблона всунуть в аргумент функции, любую функцию с одним параметром,...

Класс как аргумент функции - C++
Доброго времени суток:) Набрёл на такой пример в openGL и не могу понять как он робит, подскажите. Вот описание ф-ции: void...

Локальные переменные в функции и её аргумент - C++
Привет! Пишу функцию перевода десятичного числа в текст (не обсуждайте зачем и правильно ли я делаю) Суть такова, начало функции: ...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
nexen
187 / 180 / 3
Регистрация: 27.01.2012
Сообщений: 1,335
25.02.2014, 21:07  [ТС]     Опциональный ссылочный аргумент функции #21
DrOffset, не обладаю C++11 компилятором :'( Всё ещё сижу на VS2008, хотя давно стоит VS2012. Такие уж условия свыше
DrOffset
6909 / 4102 / 933
Регистрация: 30.01.2014
Сообщений: 6,893
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
:)
Эксперт С++
4392 / 3235 / 297
Регистрация: 19.02.2013
Сообщений: 9,045
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++
есть массив строк string *conns = new string; нужно сделать функцию, которая его бы изменяла void func( ??? ) {}

Аргумент argv в функции main() - C++
Здравствуйте. Возникли некоторые непонимания при работе с аргументом argv и указателями в целом. Мне сказали, что, при передаче...

Произвольный объект как аргумент функции - C++
Здравствуйте! Подскажите, пожалуйста, можно ли функции передавать произвольный объект? В Java есть такая конструкция: public...

Указатель массива как аргумент функции - C++
Я прочитал несколько алгоритмов сортировки массивов, но не совсем понял, если массив чисел будет передан в аргумент функции через...

Абстрактный класс, как аргумент функции - C++
добрый день. есть базовый класс Tag внем строковое поле Name есть производные от него класы SmplTag со строковым полем Value и класс...


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

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

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru