c++编程总结

1. 如果使用自己生成的dll,则需要将其导出为lib, 对每个在外部需要调用的类,前面都要加上__declspec(dllexport), 可以用宏定义,比如:

#if defined(_MSC_VER)
#define RAW_DATA_EXPORT __declspec(dllexport)
#else /* compiler doesn't support __declspec() */
#define RAW_DATA_EXPORT 
#endif

这样每个导出的类名字前面只需要加一个宏RAW_DATA_EXPORT 即可,如:

class  RAW_DATA_EXPORT Pose{

};

2. new之后要判断申请内存是否成功。如:

SI_CHAR * pData = new SI_CHAR[uLen+1];
if (!pData) {
return SI_NOMEM;
}

3. 函数只执行一次或者线程退出

设置一个flag,这个flag初始化的时候设置为true, 第一次执行后置flase, 以后都会判断这个flag,为false就不会再执行。

 退出线程也是判断flag,如:while(flag),只需将flag置flase即可退出。

4. 子类继承基类,类中包含对象,这两种情况需要在构造函数的初始化列表调用基类的构造函数,和所包含类对象的构造函数。

 比如:

class  CColisionGrid : public CDynamicGrid<TCollisionCell>

{

  CParameterizedTrajectoryGenerator const * m_parent;

  

  CColisionGrid(float x_min, float x_max,float y_min, float y_max, float resolution, CParameterizedTrajectoryGenerator* parent )

  : CDynamicGrid<TCollisionCell>(x_min,x_max,y_min,y_max,resolution), m_parent(parent)

}

原文地址:https://www.cnblogs.com/jinee/p/5410183.html