我正在尝试使用对象向量访问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
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
答案 0 :(得分:1)
recvPkt = recvPkt++;
正在检索recvPkt
的值,增加recvPkt
,然后将检索到的值(0
)存回recvPkt
,从而失去效果增量。只需增加值:
++recvPkt;
其他变量也一样。