使用另一个 class 中的原子私有变量访问 class 的成员
Accessing member of a class with atomic private variables in another class
我正在尝试使用对象向量访问 class A
中定义的原子私有变量。这个对象向量在另一个头文件中定义的其他 class B
中按值传递。从向量中检索值时,我得到的值为 0
我在 class 中几乎没有 std::atomic
私有变量 say class 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's
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;
}
Class B 在不同的头文件中 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 中为 2 portId 创建了一个对象向量,例如 vector<A> a[2]
但是当我在 getPacketCountFromA
中检索该向量时,我得到的向量大小为 2
但所有向量中的值为 0
我是不是做错了什么?
Result
size of vector is 2
pktCount = 0
recvPkt = 0
droppedPkt = 0
recvPkt = recvPkt++;
正在检索 recvPkt
的值,递增 recvPkt
,然后将检索到的值 (0
) 存储回 recvPkt
,丢失增量的作用。只需增加值:
++recvPkt;
其他变量也一样。
我正在尝试使用对象向量访问 class A
中定义的原子私有变量。这个对象向量在另一个头文件中定义的其他 class B
中按值传递。从向量中检索值时,我得到的值为 0
我在 class 中几乎没有 std::atomic
私有变量 say class 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's
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;
}
Class B 在不同的头文件中 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 中为 2 portId 创建了一个对象向量,例如 vector<A> a[2]
但是当我在 getPacketCountFromA
中检索该向量时,我得到的向量大小为 2
但所有向量中的值为 0
我是不是做错了什么?
Result
size of vector is 2 pktCount = 0 recvPkt = 0 droppedPkt = 0
recvPkt = recvPkt++;
正在检索 recvPkt
的值,递增 recvPkt
,然后将检索到的值 (0
) 存储回 recvPkt
,丢失增量的作用。只需增加值:
++recvPkt;
其他变量也一样。