0
#include <iostream>
#include <vector>
using namespace std;

struct a_struct { int an_int; };

int main () 
{
    vector <vector <a_struct> > the_vec;
    vector <a_struct> * p_vs;
    p_vs = & the_vec[0];
    *(p_vs)[0].an_int=0;   //error: 'class __gnu_debug_def::vector<a_struct,
                           //std::allocator<a_struct> >' has no member named 'an_int'
}

我不知道为什么会出现上述编译错误。

4

1 回答 1

2

在 C++ 中,[]优先.级高于*.

你的最后一行

*(p_vs)[0].an_int=0; 

当完全括起来时,是

*((p_vs[0]).an_int)=0; 

由于p_vs被宣布为

vector <a_struct> * p_vs;

好像是一个元素p_vs数组,a 也是。vector <a_struct>p_vs[0]vector<a_struct>

而且vector<a_struct>对象确实没有成员an_int

添加一些括号,你会得到你想要的。

于 2011-10-01T06:42:51.793 回答