.NetFramework 3.5 と WPF と C#3.0 とC++/CLI と Native C++を使って音楽アプリを作ってみる(9)

公開:2008-04-14 07:16
更新:2020-02-15 04:36
カテゴリ:windows

it_sourceの実装中。
サンプリングデータのType(fixed float,float,double)を変えても動作するように実装を試みているところ。

昨日は下記の仕様を満たすために苦しんでいた。

・データオブジェクトと、ファイルローダは別クラスにする。
これは、1つのデータオブジェクトに複数のファイルローダをサポートできるようにするため。
(たとえばS3M形式のファイルもitデータオブジェクトに読み込めるようにするとか)

・ローダはデータオブジェクトのプライベート・メンバにアクセスできる(つまりローダはデータオブジェクトのfriend)。
データオブジェクトはデータメンバすべてをpublicにする必要はないが、データオブジェクト中にあるプライベートデータメンバにデータファイルから読み込む必要があるため、ローダクラスからはプライベートメンバにもアクセスさせる必要がある。


いろいろ悩んだ結果、

・ローダクラスをtemplateクラスにし、データオブジェクトのfriendにする。
・複数のローダクラスの実装は、テンプレートクラスの特殊化で行う。

方針で進めることにした。
以下実装途中ソース。

it_source.h
is_source.cpp