添加成员提升::p tr_vector<>



我有以下类:

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);

可能会把事情搞砸。如果你真的需要它(从你的问题中不清楚),你可以实现一个虚拟构造函数。

相关内容

  • 没有找到相关文章

最新更新