у меня есть тип называется Fan, всякий раз, когда я пытаюсь написать эту функцию:Передача shared_ptr к функции не работает
void connect(shared_ptr<Fan>&);
это не компилируется, и это то, что я получаю в терминале:
fanBook_example.cpp:34:22: error: no matching function for call to
âmtm::FanBookServer::connect(std::shared_ptr<mtm::Fan>&)â
fanBook_example.cpp:34:22: note: candidate is:
In file included from Fan.h:3:0,
from FanBookPost.h:5,
from mtm_ex4.h:36,
from fanBook_example.cpp:16:
FanBookServer.h:39:7: note: void mtm::FanBookServer::connect(int&)
im пытается передать параметр shared_ptr как параметр, и он не работает ни с какой идеей, как это сделать? спасибо
редактировать:
Я пытаюсь реализовать функцию, которая соединять предполагается принять shared_ptr, например:
auto fan = std::make_shared<Fan>(1,"Bob");
server->connect(fan)
типа вентилятора в Fan.h (включен) и его внутри пространство имен, называемое mtm , а также FanBookServer находится внутри пространства имен mtm.
Как-то ваш компилятор думает, что соединение принимает int &. Проверьте все ваши объявления. – nvoigt
Трудно сказать с этим много информации. Не могли бы вы дать нам код, где он называется и реализован? – CoffeeandCode
@ Emad4U Похоже, что компилятор видит 'connect (int &)', но не видит 'connect (shared_ptr &)'. Это может быть вызвано скрытием имени метода, если в базовом классе «FanBookServer» объявлен 'connect (shared_ptr &)'). В этом случае вам нужно добавить 'using BaseClass :: connect;' в 'FanBookServer' или изменить имя метода connect в одном из классов. –