我有以下课程:
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:错误:'boost :: ptr_vector&gt; CpuUsage :: cpuCores'是私有的
../src/NodeInfoGather.cpp:73:错误:在此上下文中
这里的矢量问题是什么?
谢谢,
答案 0 :(得分:0)
您必须添加指向ptr_vector
的指针。请注意,它将取得该指针的所有权,因此只需执行
cpuCores.push_back(&_newVal);
可能会让事情变得更糟。如果你真的想要它(你的问题不明确)你可以实现virtual constructor。