Есть ли способ установить параметр default как функцию предыдущего параметра? [C ++] - PullRequest
4 голосов
/ 09 августа 2010

Полагаю, нет, но я просто хотел проверить - есть ли способ в C ++ сделать что-то вроде следующего? Очевидно, что когда я пытаюсь описать ниже, я получаю основанную на области видимости ошибку о баре.

void foo(Bar bar, int test = bar.testInt) { ... }

1 Ответ

7 голосов
/ 09 августа 2010

Если есть значение test, которое недопустимо, вы можете обнаружить, что:

void foo(Bar bar, int test = -1) { //assuming -1 is invalid
    if(test == -1) test = bar.testInt;

    //...
}

Если нет, вы всегда можете использовать перегруженные функции:

void foo(Bar bar, int test) {
    //...
}

void foo(Bar bar) {
    foo(bar, bar.testInt);
}
...