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

Mac*_*nos -1 c++ class vector

我坚持检查类中矢量大小的问题.这是我的代码:

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

int main() {

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

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

Bat*_*eba 7

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

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

  • @Macaronnos:不,不是.再次阅读答案.在C++中,你不是"新的"所有东西,只有当你必须这样做时(即使这样,它通常应该被包装在`std :: unique_ptr`中,如果只是为了防止你忘记必要的`删除`). (3认同)
  • 除非你的要求意味着你别无选择,否则我建议不要使用`new`.如果你使用`new`,你必须**安排相应的`delete`.要么自己做,要么使用指针管理类之一,如`std :: unique_ptr`. (3认同)