DeviceWatcherのイベントにバインドするには、TypedEventHandlerにthisポインタとメンバ関数ポインタを引数にセットしてバインドすればいい。
watcher_ = DeviceInformation::CreateWatcher();
watcher_->Added += ref new TypedEventHandler<DeviceWatcher^,DeviceInformation^>(this,&wasapi_device_manager::added);
のだが、メンバ関数はref class/structのメンバでないといけないのである。ネイティブのclassメンバ関数をセットしたらコンパイラに怒られてしまった。
解決するにはネイティブのclassをref classに変えればいいのだけれど、ref classの使用は最小限に抑えたい。理由はあまりないけれど。なんかこうデリゲートからネイティブC++のメンバ関数に変換して呼び出すようなラッパーを作れないだろうか。作ってみようか。