I have the fallowing classes:
class CpuUsage {
public:
CpuUsage();
virtual ~CpuUsage();
void SetCpuTotalTime(CpuCore _newVal);
CpuCore GetCpuTotalTimes();
void AddSingleCoreTime(CpuCore& newval);
private:
CpuCore total;
boost::ptr_vector<CpuCore> cpuCores;
};
and
class CpuCore {
public:
CpuCore();
CpuCore(int _coreId, long _user, long _nice, long _sysmode,
long _idle, long _iowait, long _irq, long _softirq, long _steal,
long _guest);
//all variable declarations...
}
For adding CpuCore objects into the cpuCores vector, should I add a pointer? Or I can copy the value, normaly, like:
void CpuUsage::AddSingleCoreTime(CpuCore _newVal) {
cpuCores.push_back(_newVal);
}
With the CpuCore *_newVal parameter, I have the following error:
../src/usage/CpuUsage.h:42: error: ‘boost::ptr_vector > CpuUsage::cpuCores’ is private
../src/NodeInfoGather.cpp:73: error: within this context
What the problem of the vector being private here?
Thanks,
You have to add a pointer to
ptr_vector. Note that it will take ownership of that pointer, so just doingmight screw things up badly. If you really want it though (which is not clear from your question) you could implement a virtual constructor.