Мне нужно реализовать метод обратного вызова, используя unique_ptr другого класса:
#include <iostream>
#include <functional>
#include <memory>
#include <vector>
class A
{
public:
void Show(std::vector<int> a, int b) {std::cout << "Hello " << " " << b << std::endl;}
};
class B
{
public:
void SetCB(std::function<void(std::vector<int> ,int)> callb);
std::function<void(std::vector<int> ,int)> cb;
};
void B::SetCB(std::function<void(std::vector<int> ,int)> callb)
{
cb= callb;
}
int main()
{
std::unique_ptr<A> a1 = std::make_unique<A>();
std::unique_ptr<B> b1 = std::make_unique<B>();
b1->SetCB([&](std::vector<int> a, int b){a1->Show(a,b);});
std::vector<int> y;
b1->cb(y,4);
}
Я получаю нарушение доступа к чтению во время выполнения в VC ++ - как мы можем реализовать обратный вызов с использованием unique_ptr с некоторымипараметры с использованием std :: bind или другими способами?
$ c++ -std=c++14 try68.cpp
^
Разве невозможно установить методы обратного вызова с использованием unique_ptr?