これをC++03で直接実行できるとは思いませんが、「クラス外コンストラクター」と考えることができるものを使用して、ブルートフォース攻撃と比較して(おそらく)ジョブを単純化できます。
struct someclass{
int a, b, c, d;
};
someclass make(int a, int b, int c, int d) {
someclass ret = {a, b, c, d};
return ret;
}
int main(){
someclass *s = new someclass();
*s = make(1, 2, 3, 4);
}
かなり最近の(そしておそらく最も古い)C ++コンパイラが関数呼び出しをインライン化するのは非常に簡単なことです。そのため、関数呼び出しによってオーバーヘッドが発生することはありません。必要に応じて、関数をテンプレートに変換し、さまざまな数のパラメーターに対してオーバーロードして、次のようなことを行うこともできます。
someclass *s = new someclass();
*s = make<someclass>(1, 2, 3, 4);
otherclass *o = new otherclass();
*o = make<otherclass>(1, 2);
ただし、最終的には、ここでの大きな問題は、間違った足で始めていることです。(少なくとも)来年または2年は、C++にnew
式があることを忘れてしまう可能性があります。あなたがそれを必要としているように感じることは(特にこのような場合)、あなたがまだC ++にうまく適応しておらず、まだJavaを書き込もうとしていることのかなり良い兆候です。