[英]C++ vectors - acessing the size of vector of type struct declared within a struct
我的声明如下
#include <vector>
#include <iostream>
using namespace std;
typedef struct _ListofHops_T
{
int macAddrLtr;
int ttlValue;
}ListofHops;
struct ReadActivateLinkTrace
{
typedef std::vector < ListofHops *> ListofHopsList;
bool operationState;
};
int main()
{
ReadActivateLinkTrace readLinkTrace;
for (size_t listItr=0; listItr < readLinkTrace.ListofHopsList.size(); listItr++)
{
.....
}
}
我试图在结构ReadActivateLinkTrace
声明一个跃点struct
列表的向量。
vector.cpp:23: 错误:ReadActivateLinkTrace::ListofHopsList 的使用无效
我是 vector 的新手。 我如何访问/迭代结构中定义的结构向量?
该声明是有效的,但它并没有按照您的想法行事。 ListofHopsList
是一种类型(提示: typedef
),而不是变量。 您可能正在寻找
struct ReadActivateLinkTrace
{
std::vector < ListofHops *> ListofHopsList;
bool operationState;
};
问题不在于向量本身,而在于您没有声明成员,而是定义了一个新类型。
另外,您是否有任何理由使用指针向量而不是对象向量?
ReadActivateLinkTrace::ListofHopsList 是一个typedef
,它只声明一个类型名称的别名。 它没有定义该类型的实际对象。 你显然想要:
struct ReadActivateLinkTrace
{
std::vector < ListofHops *> ListofHopsList;
bool operationState;
};
不过,您可能应该重新考虑一下它是指针向量。 至少,在这里,指针似乎不太可能是最佳选择。 当你在做的时候,这个:
typedef struct _ListofHops_T
{
int macAddrLtr;
int ttlValue;
}ListofHops;
在几个方面非常可怕。 首先这里的typedef
只在 C 代码中需要,而不是 C++。 其次,名称_ListofHops_T
是为实现保留的,因此使用它会产生未定义的行为。 这应该只是:
struct ListofHops {
int macAddrLtr;
int ttlValue;
};
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.