0

我有休闲课程:

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' is private ../src/NodeInfoGather.cpp: 73:错误:在这种情况下

向量在这里是私有的有什么问题?

谢谢,

4

1 回答 1

0

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

cpuCores.push_back(&_newVal);

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

于 2011-11-09T15:31:33.070 回答