引数有のコンストラクタを持つクラスの配列の初期化
以前自分が書いたコードを見てわけがわからなかったので。
// 引数有のコンストラクタを持つクラスの配列の初期化 #include <iostream> #include <new> // placement new のために new をインクルード using namespace std; class Hoge{ private: int int_var; public: Hoge(); Hoge(int int_argv); void PrintIntVar(); }; // 引数なしコンストラクタを宣言する Hoge::Hoge(){ int_var = -1; }; Hoge::Hoge(int int_argv){ int_var = int_argv; }; void Hoge::PrintIntVar(){ cout << int_var << " "; } int main() { // your code goes here Hoge hoge[10]; for(int i=0; i<10; i++){ hoge[i].PrintIntVar(); } cout << endl; for(int i=0; i<10; i++){ //各要素に対してplacement new new(hoge+i)Hoge(i); } for(int i=0; i<10; i++){ hoge[i].PrintIntVar(); } cout << endl; return 0; }
Ideone.com - qQl3li - Online C++0x Compiler & Debugging Tool
余談
以前 配列の長さを取得する方法 - 多分週刊「今週の進捗」 という記事を書いてから、
「C++はテンプレート関数でなんとかできる」とのご指摘を頂きました。
[Wandbox]三へ( へ՞ਊ ՞)へ ハッハッ
テンプレートを勉強したらまた読みなおそう。