Я хочу выучить нестандартные деллокаторы в общих указателях boost.
Я включил:
#include <string>
#include <boost/shared_ptr.hpp>
#include <boost/bind.hpp>
создал простой интерфейс:
class deleter
{
public:
void delete_ptr(void * ptr)
{
delete ptr;
};
};
class plugin: public deleter
{
public:
virtual boost::shared_ptr<std::string> pass_and_modify_data( boost::shared_ptr<std::string> a) =0;
};
И простой класс
#include "plug_in_interface.h"
class my_plugin: public plugin
{
public:
virtual boost::shared_ptr<std::string> pass_and_modify_data( boost::shared_ptr<std::string> a)
{
return boost::shared_ptr<std::string>(new std::string, boost::bind( &my_plugin::delete_ptr, _1 ) );
}
};
Но он не хочетскомпилировать в библиотеку со следующими ошибками компилятора:
Error 7 error C2440: 'newline' : cannot convert from 'std::string *' to 'deleter *' c:\program files (x86)\boost\include\boost-1_48\boost\bind\mem_fn.hpp 333 1 DemoPlugin
Error 8 error C2647: '->*' : cannot dereference a 'void (__thiscall deleter::* const )' on a 'std::string *' c:\program files (x86)\boost\include\boost-1_48\boost\bind\mem_fn.hpp 333 1 DemoPlugin
Что мне делать?Как изменить способ создания общего ресурса с помощью обычного удаления boost::shared_ptr<std::string>(new std::string, boost::bind( &my_plugin::delete_ptr, _1 ) );
?Что не так с моей связью?