Reputation: 3
I am confused with C++ vector
and ask for help.
I declare a class CBoundaryPoint
:
class CBoundaryPoint:
{
public:
double m_param;
int m_index;
}
And then I define a vector
:
vector<CBoundaryPoint> vBoundPoints;
CBoundaryPoint bp;
double param;
// other codes
bp.m_param = param;
vBoundPoints.push_back( bp );
It surprises me that for every element in vBoundPoints
, the value of m_param
is totally different from the given value param. I just don't know why.
For Example:
param = 0.3356;
bp.m_param = param; // so bp.param equals to 0.3356;
vBoundPoints.push_back( bp ); // while (*(vBoundPoints.end()-1)).m_param = -6.22774385622041925e+066; same case to other elements
So what happened and why? I'm using VS2010.
Upvotes: 0
Views: 93
Reputation: 227390
You probably get garbage when you resize the vector or create a vector of a certain size using the size_type
constructor. You get default-constructed objects in your vector, and these contain primmitive types. Since you have no user defined default constructor, the values are essentially random, or "garbage".
You can fix this by adding a default constructor to your class:
class CBoundaryPoint:
{
public:
CBoundaryPoint : m_param(), m_index() {} // initializes members to 0. and 0
double m_param;
int m_index;
}
Upvotes: 1