在另一个类中访问具有原子私有变量的类的成员

时间:2018-05-06 18:48:53

标签: c++ vector atomic

我正在尝试使用对象向量访问class A中定义的原子私有变量。此对象向量通过另一个头文件中定义的其他class B中的值传递。从vector中检索值时,我得到的值为0

我在课堂上的std::atomic私有变量很少说A类

A.hpp 档案

class A
{ 
  public: 
  vector<A> updatePktCount();
  private:
  std::atomic pktCount;
  std::atomic recvPkt;
  std::atomic droppedPkt;

};

A.cpp

//不同端口会有不同的pkts     矢量a [2]; // 2因为我有2个端口ID

vector<A> A::updatePktCount(int portId) 
{  a.push_back(A());
  //some function that gets packet details based on portId
  pktCount = getPacketCount(int portID, int recvPkt,int pktCount,int droppedPkt); 
  pktCount = pktCount++;
  recvPkt  = recvPkt++;
  droppedPkt = droppedPkt++; 

  a.push_back(A());

  return a; 
}

不同头文件B.hpp

中的B类
class B: public A {

   void getPacketCountFromA();
};

B.cpp档案

void B::getPacketCountFromA()
{
   vector<A> storeValue; 
   A a; 
   storeValue = a.updatePktCount();
   for(auto i = storeValue.begin(); i != storeValue.end(); ++i)
   {
      // print values
   }
}

我在A中创建了一个对象向量,如vector<A> a[2]为2 portId,但是当我在getPacketCountFromA中检索此向量时,我得到的向量大小为2,但所有值都在向量是0

我在这里做错了吗?

  

结果

     

向量的大小为2   pktCount = 0   recvPkt = 0   droppedPkt = 0

1 个答案:

答案 0 :(得分:1)

recvPkt = recvPkt++;正在检索recvPkt的值,增加recvPkt,然后将检索到的值(0)存回recvPkt,从而失去效果增量。只需增加值:

++recvPkt;

其他变量也一样。

相关问题