c ++代码编译期间的分段错误(核心转储)错误消息

时间:2015-07-18 11:03:53

标签: c++ linux

我是c ++的新手,并尝试编译简单的c ++程序。使用矢量

#include <iostream>
#include<vector>
#include<string.h>
#include<stdlib.h>
#include<stdio.h>
#define BUFSIZE 100

using namespace std;

typedef struct AA{
    int a;
    std::string a_str;
}A;
typedef struct BB{
    int b;
    std::string b_str;
    vector<AA> Aobj;
}B;

int main()
{
  B bobj;
  bobj.Aobj[0].a=4;
  bobj.Aobj[0].a_str="DICOM";
  bobj.b_str="LDAP";
  bobj.b_str="DICOM";
  size_t ipos;
  ipos=bobj.Aobj[0].a_str.find("COM");
  if(ipos!=string::npos)
        cout<<"String Found Successfully....";
  else
        cout<<"String Not Found ....";
  return 0;
}

当我编译程序时,它显示一条错误消息 分段错误(核心转储) 使用Ubuntu OS

2 个答案:

答案 0 :(得分:2)

您需要做的是首先创建AA类型的对象,然后将其推送到B的向量

AA aa;
aa.a = 4;
aa.a_str = "hello world";
bobj.Aobj.push_back(aa);

答案 1 :(得分:1)

B添加构造函数。此外,C ++不需要像这样的struct typedef。简单地

struct B {
    int b;
    std::string b_str;
    std::vector<A> Aobj;

    B() : Aobj(std::vector<A>(1)) {}
};