ファイルを読み込んでデータを構築してからそのハンドルを返すために以下のような関数を作りました。
対応するファイルを読み込まないときは0(null)を与えます。
今、引数がstd::string型の方が便利だと考え以下のように変更したいと思っています。
その場合、対応するファイルを読み込まないようにするためにはどうすれば良いでしょうか。
思いつくのは0の代わりに""なのですが、なんだか恰好悪いので何か良い方法があればお願いします。
空のstringの表し方について
Re: 空のstringの表し方について
無理に一つの関数にまとめないほうが良いのでは?素直にこういう実装でもありだと思います。
[追記]
これだとハンドルが複数になってしまうので、それを回避するならこんな感じにクラスメンバとして実装するという手もあります。
[追記]
オプショナルな変数ということであればBoost.optionalなども有りますが、今回の場合は有用ではないでしょう。
Handle loadVertFile(const string& vert);
Handle loadGeomFile(const string& geom);
Handle loadFragFile(const string& frag);
Handle loadTessFile(const string& tess);
これだとハンドルが複数になってしまうので、それを回避するならこんな感じにクラスメンバとして実装するという手もあります。
class Shader {
public:
void loadVertFile(const string& vert);
void loadGeomFile(const string& geom);
void loadFragFile(const string& frag);
void loadTessFile(const string& tess);
};
オプショナルな変数ということであればBoost.optionalなども有りますが、今回の場合は有用ではないでしょう。
Re: 空のstringの表し方について
どのファイルも 読むか読まないかはその時次第 とかであれば
とかでどうでしょう?
Re: 空のstringの表し方について
やはりそうなりますよね。元々はclass Shaderのようなものがあり、毎回指定するのが面倒だったので
ヘルパー関数
Shader* loadFiles(const string& vert, const string& geom, const string& frag, const string& tess);
少し考えてconst char*版の内部で文字列処理してしまおうという結論に至りました。
どうもお騒がせしました。