プロが教えるわが家の防犯対策術!

はじめまして。
C++の経験があまりなく、下記の現象で困っております。

ある関数で
構造体Aの変数aを
vector<A> bにpush_backすると
"Microsoft Visual C++ Debug Library"ウィンドウが表示されて、実行できません。
ウィンドウに表示されたエラーコードは下記となります。
"Debug Error R6010 -abort() has been called"(添付画像参照)
bはクラスのメンバ変数です。

デバック実行をして、push_backの中を追っていくと
c:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\xmemory
のconstruct関数で上記のエラーがでます。
構造体Aのサイズは200バイトで、ピープ領域は十分確保できていると考えています。

実行環境
WINDOWS 7
visualstudio2010

どんな事でもいいので教えて頂ければ幸いです。

「【C++】vectorについて」の質問画像

質問者からの補足コメント

  • 構造体Aは下記となります。
    Vector3d、Matrix3d がeigenの行列クラス。
    Sophus::SE3がSophusのクラスです。

    struct A
    {
    Vector3d t;
    Matrix3d R;
    double d;
    Vector3d n;
    Sophus::SE3 T;
    int score;
    };

      補足日時:2015/07/20 13:06
  • 構造体Aは下記となります。
    Vector3d、Matrix3d がeigenの行列クラス。
    Sophus::SE3がSophusのクラスです。

    struct A
    {
    Vector3d t;
    Matrix3d R;
    double d;
    Vector3d n;
    Sophus::SE3 T;
    int score;
    };

    No.1の回答に寄せられた補足コメントです。 補足日時:2015/07/20 13:07

A 回答 (2件)

……ごめん、


> Vector3d、Matrix3d がeigenの行列クラス。
> Sophus::SE3がSophusのクラスです。
といきなり言われても、eigen や Sophus が何を意味するのか解らないからどうしたらいいか答えられないや。

再度のお願いですみませんが、ソフトが完成した暁にそれを使ってあなたがやろうとしていることの簡単な説明と、Vector3d, Matrix3d , Sophus::SE3 が何のライブラリに所属しているクラスなのかを補足願います。
    • good
    • 0

その構造体 A の定義が書かれていないので確実なことは言えませんが、その構造体に代入演算子・コピーコンストラクタがないかデストラクタとの兼ね合いで適切なものになっていないのが原因ではないかと思われます。

それらを追加・修正すればよろしいかとおもいます。
ただ、その構造体がC 言語やほかの言語とのインターフェースとして使われているのであるならば別の手を考えなくてはなりませんが。

もし差支えなければその構造体の定義をご呈示願います。そうすればどのように修正すればいいかアドバイスができると思います。
この回答への補足あり
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!