Есть ли способ привязать перегруженные функции класса к объекту функции? - PullRequest
0 голосов
/ 03 февраля 2020

Я новичок в концепции привязки функций. Мне нужны функции-члены класса, перегруженные в зависимости от количества аргументов, и я хочу связать эти функции. У меня есть еще одно сомнение, возможен ли объект функции с переменными аргументами.

Пример:

class A{
    void print(int i)
    {
    };
    void print(int i,int j){
    };
}; 
//inside the object of A can I create function object like this??
auto f=std::bind(&A::print, this, std::placeholders::_1,...);

1 Ответ

1 голос
/ 03 февраля 2020

В контекстах с точной подписью соответствующая перегрузка выбирается автоматически:

void (A::*p_i)(int) = &A::print;
void (A::*f_ii)(int, int) = &Demo::f;

В тех случаях, когда подпись не может быть выведена:

//auto f_a = &A::print; // ambiguous - which one???

вы можете явно выбрать с помощью приведения :

auto f_a = static_cast<void (A::*)(int)>(&A::print);
...