私は休閑クラスがあります。追加メンバー後押し:: 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;
};
とCPUコアが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...
}
が、私はポインタを追加する必要がありますか? CPUコア* _newValパラメータで
void CpuUsage::AddSingleCoreTime(CpuCore _newVal) {
cpuCores.push_back(_newVal);
}
、私は次のようなエラーがあります:
../src/usage/CpuUsage.h:42:エラー:「ブーストまたは私は次のように、normaly、値をコピーすることができます:: ptr_vector> CpuUsage :: cpuCoresはプライベートです ../src/NodeInfoGather.cpp:73:エラー:このコンテキスト内
ここではプライベートなベクターの問題は何ですか?
おかげで、
ポインタを追加する必要があります。 'boost :: ptr_vector <>'はポインタとそのポインタを所有しています。 'std :: vector <>'だけを使うのはなぜですか? –
私はこのポストに触発されたブーストptrベクトルを使用しています:http://stackoverflow.com/questions/2693651/c-vector-of-objects-vs-vector-of-pointers-to-new-objects –
あなたの与えられたコードで 'CpuCore'を介して多型を持っているようです。しかし、投稿されたコードは現実的ではなく、 'AddSingleCoreTime'の宣言と定義は異なっています。 –