class BaseClass {
public:
BaseClass(const byte *buff, long size) {
// Some Computation
}
};
class DerivedClass: public BaseClass {
public:
std::vector<byte> filebuff;
long buff_size;
DerivedClass(): BaseClass(/*How should I send stuff here?*/)
{
}
/*return type??*/ cal_func(){
// Some computation involving file descriptors.
// Store result in filebuff. Store size of filebuff in buff_size.
return /*what??*/;
}
}
次の解決策しか思いつきません。
DerivedClass(): BaseClass(&filebuff[0], cal_func)
上記の場合、filebuff の長さを返す関数 func() を作成します。私は filebuff が単なるアドレスであるという事実に依存しているため、コンパイラが func の計算値を最初にスタックに置くか、最初の引数である filebuff に置くかは問題ではありません。
これが正しい方法かどうか教えてください。最初の引数がアドレスではなく、関数 func で実行される計算を必要とするその他の計算値でない場合、どのように処理するのが最善でしょうか?