我有以下类:
class CpuUsage {
public:
CpuUsage();
virtual ~CpuUsage();
void SetCpuTotalTime(CpuCore _newVal);
CpuCore GetCpuTotalTimes();
void AddSingleCoreTime(CpuCore& newval);
private:
CpuCore total;
boost::ptr_vector<CpuCore> cpuCores;
};
和
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...
}
为添加CpuCore对象到cpuCores矢量,我应该添加一个指针吗?或者我可以复制这个值,比如:
void CpuUsage::AddSingleCoreTime(CpuCore _newVal) {
cpuCores.push_back(_newVal);
}
使用CpuCore *_newVal参数,我有以下错误:../src/usage/CpuUsage.h:42: error: ' boost::ptr_vector> CpuUsage::cpuCores '是private../src/nodeinfo .cpp:73: error: within this context
这里向量是私有的问题是什么?
谢谢,
您必须添加指向ptr_vector
的指针。注意,它将获得指针的所有权,所以只要执行
cpuCores.push_back(&_newVal);
可能会把事情搞砸。如果你真的需要它(从你的问题中不清楚),你可以实现一个虚拟构造函数。