2010-11-19 44 views
1

我想讓它創建自己的記錄。解決這個問題的最好方法是什麼?讓用戶創建自己的類的實例

我可以使用數組或矢量作爲變量名嗎?

int RecU[100]; 

class Record 
    {...}; 

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

我試過了,我的程序崩潰了,所以我不知道它是否可能。

+0

你需要初始化數組中的每個記錄,然後才能使用它:Record [0] = new Record(); var firstRecord = RecU.First(); – Holystream 2010-11-19 21:35:38

+0

@Holystream:他們不是指針。 – casablanca 2010-11-19 21:36:51

+3

你是什麼意思在特定的「崩潰」?這是你使用的代碼嗎? 「用戶」或「創建他們自己的記錄」究竟意味着什麼? – 2010-11-19 21:36:58

回答

1

如果您希望客戶端代碼能夠隨意實例化Record,您所要做的就是確保至少有一個構造函數可供他們(或工廠方法)使用。通常情況就是這樣。如果你聲明你的類是這樣的:

class Record 
{ 
}; 

...然後沒有什麼可以阻止客戶端代碼實例化它。他們可以簡單地這樣做:

int main() 
{ 
    Record my_record; 
} 

在你的OP,它看起來像你想創建的100 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 '。 – 2010-11-19 21:59:08

+0

@David,是的,我打算提一提,但是在我打字的時候忘記了! – 2010-11-19 22:08:20

1

一個問題是你有兩個定義RecU,這兩個定義沒有任何關係。這是全球性的,並且在main()中定義了一個,它隱藏了全球性的一個。

+0

我不能相信,我沒有看到,我一直忘記,類是數據類型,那麼你會怎麼做呢? – TimothyTech 2010-11-19 21:48:18