下記のようなコードを書いたが、std::bindの部分が意図したように動かない。std::functionにstd::bindでthisポインタを保持させたいのだが、どうもthisポインターが指すインスタンスのコピーを保持してしまっているような感じなのである。thisポインタの部分をstd::ref(*this)にしても同じだった。よくわからん..。そもそもこんな使い方だめだっけかな..。
struct WaveTable : public Oscillator
{
typedef std::vector<float> WaveDataType;
typedef std::function<void (float * ,float)> ProcessorType;
WaveTable() : waveCounter_(0.0f),stereo_(false)
{
Stereo(false);
};
void Process(float * data,float delta)
{
// ステレオのときはProcessStereo()を呼ぶ
// モノラルのときはProcessSMono()を呼ぶ
processor_(data,delta);
}
void ProcessMono(float * data,float delta)
{
// モノラル時の処理
}
void ProcessStereo(float * data,float delta)
{
// ステレオ時の処理
}
bool Stereo() const {return stereo_;}
void Stereo(bool v) {
stereo_ = v;
if(v)
{
// ステレオのときはProcessStereo()を呼ぶ
processor_ = std::bind(&WaveTable::ProcessStereo,this,_1,_2);
} else {
// モノラルのときはProcessSMono()を呼ぶ
processor_ = std::bind(&WaveTable::ProcessMono,this,_1,_2);
}
}