昨天我看了同事的一些代碼和跨越這來了:擦除類的所有成員
class a_class
{
public:
a_class() {...}
int some_method(int some_param) {...}
int value_1;
int value_2;
float value_3;
std::vector<some_other_class*> even_more_values;
/* and so on */
}
a_class a_instances[10];
void some_function()
{
do_stuff();
do_more_stuff();
memset(a_instances, 0, 10 * sizeof(a_class)); // <===== WTF?
}
那是合法的(世跆聯線,而不是公共屬性)?對我來說,它聞起來真的很糟糕...... 使用VC8編譯時代碼運行良好,但當調用時,但在訪問任何其他成員時,它會引發VC9編譯時的「意外異常」。任何見解?
編輯:將存儲從memset(&a_instances...
更改爲memset(a_instances...
。感謝您指出Eduard。
EDIT2:刪除了ctor的返回類型。謝謝你。
結論:謝謝你們,你們證實了我的懷疑。
好吧,你讓我在那裏。當然,在原始代碼中不是&a_instances,而是a_instances。相應地更改了代碼。謝謝。 – EricSchaefer 2009-01-31 16:05:45
好吧,我正在改變我的答案。 – 2009-01-31 16:07:01