昨天我看了同事的一些代码和跨越这来了:擦除类的所有成员
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