나는 fallowing 클래스가 있습니다추가 회원 부스트 : : 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;
};
및 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 * _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 <>'를 사용하지 않는가? –
이 게시물에서 영감을받은 boost ptr vector를 사용하고 있습니다. http://stackoverflow.com/questions/2693651/c-vector-of-objects-vs-vector-of-pointers-to-new-objects –
주어진 코드에서'CpuCore'에 대해 다형성이있는 것 같습니다. 그러나 게시 된 코드는 실제가 아니며 'AddSingleCoreTime'에 대한 선언 및 정의가 다릅니다. –