类被代码忽略的方法

时间:2017-01-13 14:43:54

标签: c++ pointers methods

我有这样的情况,在我的程序中的某个时刻,我用new创建一个指针。然后我尝试使用分配的指针类的一些方法,并且代码被忽略。没有崩溃,但是当我进行测试之后,就像没有发生任何事情一样:

以下是代码,setAge函数被忽略:

g2o::EdgeLinkXY_malcolm* linkObservation = new g2o::EdgeLinkXY_malcolm;

bool outout = false;
std::cout << "Bool" << outout << std::endl;
outout = linkObservation->interface.setAge(_age_start_value);
std::cout << "Bool" << outout << std::endl;
assert(outout == 1);
std::cout << "Age set" << std::endl;
assert(linkObservation->interface.manuallySetAge() == true);

EdgeLinkXY_malcolm拥有一个名为interface的属性,如下所示:

class G2O_TYPES_SLAM2D_API EdgeInterfaceMalcolm
{
  protected:
   bool _flag_set_age;
  public:
   g2o::SE2 _malcolm_original_value;
  double _malcolm_age;

//       EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
   EdgeInterfaceMalcolm() : _flag_set_age(false), _malcolm_age(1){};

 virtual g2o::SE2 getOriginalValue(){return _malcolm_original_value;}
 virtual void setOriginalValue(const g2o::SE2& orig_val){_malcolm_original_value = orig_val;}
 virtual bool manuallySetAge(){return _flag_set_age;}
 virtual double getAge(){return _malcolm_age;}
 virtual bool setAge(double a){
  std::cout << "Setting the age" << std::endl;
  _flag_set_age = true;  
  assert(_flag_set_age == true); 
  _malcolm_age = a; 
  return _flag_set_age;
}

};

这是edge_link:

class G2O_TYPES_SLAM2D_API EdgeLinkXY_malcolm : public EdgeSE2PointXY
{
  public:
    EdgeInterfaceMalcolm interface;
//       EIGEN_MAKE_ALIGNED_OPERATOR_NEW;
   EdgeLinkXY_malcolm();
}

它是构造函数:

EdgeLinkXY_malcolm::EdgeLinkXY_malcolm() :
    EdgeSE2PointXY()
  {
  }

我有一个测试文件,我尝试上面写的函数,它工作正常,所有测试都通过。只是在运行真实程序的某个时候,setAge()被忽略了。功能内部的打印件甚至没有打印在终端上。变量outout似乎也被断言忽略,因为即使outout可以等于另一个值,assert(outout == 1)也不会停止。这是我的代码停止的部分:

Bool0
Bool45
Age set
acg_node_rviz_full: /home/malcolm/ros_catkin_ws/indigo_ws/src/auto_complete_graph/src/ACG.cpp:258: g2o::EdgeLinkXY_malcolm* AASS::acg::AutoCompleteGraph::addLinkBetweenMaps(const Vector2D&, g2o::VertexSE2Prior*, g2o::VertexPointXY*): Assertion `linkObservation->interface.manuallySetAge() == true' failed.

我不知道为什么这不起作用我对我做错了什么感到很困惑,这样c ++代码可以像这样被忽略而不会崩溃?

0 个答案:

没有答案