Как связать аргументы с конструктором? - PullRequest
4 голосов
/ 14 октября 2019

Как описано выше, я хочу использовать std::bind для создания функции, которая при вызове возвращает объект, созданный с помощью конструктора с параметрами по умолчанию, как показано ниже:

#include <functional>

class X
{
    int x_, y_;
    public:
    X(int x, int y): x_(x), y_(y)
    {
    }
};

int main() {
    auto fun = std::bind(&X::X, 1, 2);
    X x = fun();   
}

Вместо этого я получаю следующееошибки компилятора:

ошибка: квалифицированная ссылка на 'X' - это имя конструктора, а не тип в этом контексте

ошибка: ожидается '(' для приведения типа функции или типаконструкция По ссылке на эту строку:

auto fun = std::bind(&X::X, 1, 2);

1 Ответ

2 голосов
/ 14 октября 2019

Комментарии отвечают на этот вопрос. Очевидно, std::bind нельзя использовать с конструкторами и деструкторами, потому что у них не может быть взят их адрес. Спасибо Юджину, Филомату и молбднило.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...