Я использую VS2010.В конструкторе моего некомпилируемого класса Scene у меня есть:
auto& character_mgr = CharacterManager::Instance();
character_mgr.initialize();
character_mgr.add_observer( std::bind( &Scene::on_character_event, *this, std::placeholders::_1, std::placeholders::_2 ) );
Здесь add_observer определен как:
void add_observer( Observer observer ){ ... }
, а Observer определен как:
typedef std::function< void ( CharacterEvent, const Character& ) > Observer;
Проблема в том, что компилятор говорит мне, что есть попытка скопировать мою сцену, которую я предоставил в привязке, используя *this
, думая, что она сохранит ссылку на нее, не пытаясь скопировать ее, когда я копирую функтор, сгенерированныйпереплет.
- Почему он пытается скопировать мой объект?Это нормально?
- Как мне сделать, чтобы избежать копирования при предоставлении функции-члена моего объекта?