2010-11-19 11 views
1

自分のレコード作成プログラムのユーザーが独自のレコードを作成できるようにしたいと考えています。これに取り組む最善の方法は何ですか?ユーザーがクラスの独自のインスタンスを作成できるようにする

変数名に配列またはベクトルを使用できますか?

int RecU[100]; 

class Record 
    {...}; 

int main() 
    { 
    Record RecU[1]; 
    } 

私はそれを試みたが、私のプログラムは、それが可能であるかどうかわからないので、イムクラッシュされます。

+0

使用する前に、配列の各レコードを初期化する必要があります。Record [0] = new Record(); var firstRecord = RecU.First(); – Holystream

+0

@Holystream:彼らは指針ではありません。 – casablanca

+3

具体的に「クラッシュする」とはどういう意味ですか?これはあなたが使っていたコードですか? 「ユーザー」または「自分のレコードを作成する」という意味はまったく何ですか? –

答えて

1

クライアントコードでRecordを任意にインスタンス化できるようにするには、少なくとも1つのコンストラクタ(またはファクトリメソッド)が使用可能であることを確認するだけです。通常はそうです。

class Record 
{ 
}; 

...クライアントコードのインスタンス化を妨げるものは何もありません。彼らは、単にこれを行うことができます:あなたは100のRecordの配列を作成しようとしていたようなあなたのOPで

int main() 
{ 
    Record my_record; 
} 

は、それが見えました。

class Record 
{ 
}; 

static const unsigned num_records = 100; 

Record the_records[num_records]; 

int main() 
{ 
    for(unsigned i = 0; i < num_records; ++i) 
    Record& that_record = the_records[i]; // 'that_record' is a ref to one of the records 
} 
+1

さらに、 'std :: vector 'を作成してください。 –

+0

@David、はい、私は言及するつもりだったが、入力中に忘れてしまった! –

1

1つの問題は、お互いに関係のないRecUという2つの定義があることです。グローバルなものがあり、main()に定義されているものがあります。これはグローバルなものを隠しています。

+0

私はそれを見ていない私は信じられない、私はクラスがデータ型であることを忘れているので、あなたはそれをどのようにしますか? – TimothyTech

関連する問題