关于c ++:添加成员boost :: ptr_vector<>

Adding member boost::ptr_vector<>

我有休闲课:

1
2
3
4
5
6
7
8
9
10
11
12
13
class CpuUsage {
public:
    CpuUsage();
    virtual ~CpuUsage();

    void SetCpuTotalTime(CpuCore _newVal);
    CpuCore GetCpuTotalTimes();

    void AddSingleCoreTime(CpuCore& newval);
private:
    CpuCore total;
    boost::ptr_vector<CpuCore> cpuCores;
};

1
2
3
4
5
6
7
8
9
10
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对象添加到cpucore向量中,我应该添加一个指针吗?或者我可以复制值normaly,比如:

1
2
3
void CpuUsage::AddSingleCoreTime(CpuCore _newVal) {
    cpuCores.push_back(_newVal);
}

对于cpucore*_newval参数,我有以下错误:../src/usage/cpusage.h:42:错误:"boost::ptru vector>cpusage::cpucore"是私有的../src/nodeinfographer.cpp:73:错误:在此上下文中

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

谢谢,


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

1
cpuCores.push_back(&_newVal);

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