调用矢量>类字段的大小()时出错

时间:2015-10-23 15:26:42

标签: c++ class vector

我坚持检查班级中矢量大小的问题。这是我的代码:

class myclass {
public:
  std::vector<mystruct> v;
};

int main() {

    myclass * a, *b;
    std::cout << a->v.size() << '\n';    
    return 0;
}

此代码会出现分段错误。有人会解释这个片段中的错误是什么吗?我怎么能打败它?

2 个答案:

答案 0 :(得分:7)

你还没有为指针分配任何内存;因此,您的程序行为未定义。

为什么不使用本地自动变量? myclass a, b;就足够了。您还需要使用成员选择运算符->替换成员运算符.的指针。

答案 1 :(得分:4)

你想这样做:

int main() {

    myclass a, b;
    std::cout << a.v.size() << '\n';    
    return 0;
}

在您的代码中,您使用两个指向myclass个对象的指针,但它们未初始化,因此当您通过箭头操作符取消引用a时,您将调用undefined行为。