添加成员boost :: ptr_vector<>

时间:2011-11-09 15:28:42

标签: c++ boost ptr-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:错误:'boost :: ptr_vector&gt; CpuUsage :: cpuCores'是私有的 ../src/NodeInfoGather.cpp:73:错误:在此上下文中

这里的矢量问题是什么?

谢谢,

1 个答案:

答案 0 :(得分:0)

您必须添加指向ptr_vector的指针。请注意,它将取得该指针的所有权,因此只需执行

cpuCores.push_back(&_newVal);

可能会让事情变得更糟。如果你真的想要它(你的问题不明确)你可以实现virtual constructor