I wrote a small coordinate class to handle both int and float coordinates.
template <class T>
class vector2
{
public:
vector2() { memset(this, 0, sizeof(this)); }
T x;
T y;
};
Then in main() I do:
vector2<int> v;
But according to my MSVC debugger, only the x value is set to 0, the y value is untouched. Ive never used sizeof() in a template class before, could that be whats causing the trouble?
No don’t use
memset— it zeroes out the size of a pointer (4 bytes on my x86 Intel machine) bytes starting at the location pointed bythis. This is a bad habit: you will also zero out virtual pointers and pointers to virtual bases when usingmemsetwith a complex class. Instead do: