C++ の const フィールドは、初期化リストで初期化する必要があります。これにより、コンストラクター パラメーターからの相互依存値の計算が簡単ではなくなります。
たとえば、この Java コードを c++ に変換する最良の方法は何ですか?
public class SomeObject {
private final String some_string;
private final int some_int;
public SomeObject(final String input_filename){
SomeReader reader(input_filename);
some_string = reader.getString();
some_int = reader.getInt();
reader.close();
}
}
サブオブジェクトを SomeObject にカプセル化することを考えましたが、これは問題をシフトしているだけです。または静的メソッドを使用してオブジェクトを構築します。
class SomeObject {
private:
const std::string some_string;
const int some_int;
public:
static SomeObject unserialize(const char * input_filename){
SomeReader reader = new SomeReader(input_filename);
string str = reader.get_string();
int i = reader.get_int();
reader.close();
SomeObject obj(str, i);
return obj;
};
SomeObject(const std::string str, const int i) :
some_string(str),
some_int(i)
{};
}
より良い解決策はありますか?
ありがとうございました。