永发信息网

如何在C++中获得完整的类型名称

答案:2  悬赏:80  手机版
解决时间 2021-02-01 08:40
  • 提问者网友:蓝莓格格巫
  • 2021-01-31 14:59
如何在C++中获得完整的类型名称
最佳答案
  • 五星知识达人网友:長槍戰八方
  • 2021-01-31 16:05
二楼说的只能在类模板中才能用。

我尝试过这种方法,先声明一个基类,其他类在其基础上进行派生:

class CCtrlBase
{
public:
// Constructor/Deconstructor
CCtrlBase(CCtrlBase *ptr=NULL);         // 构建函数的ptr用于填写其派生类的对象指针,从而允许反向调用和访问
virtual ~CCtrlBase();

// Attributes
// 下列变量由基类和派生类的构建函数设置,用于为每个对象的信息维护提供支持
// 由对象的构建函数自动调用基类构建函数设置或其管理对象调用本对象的SetCallBack
private:
CCtrlBase          *pParent;            // 管理本对象的对象的指针,由维护或管理该对象的对象在创建此对象时设置

protected:
static bool bRunOnce    ;
static int          m_process_id;       // 进程号,将作为CEmulator的m_object_index。
static int          m_object_num;       // 维护进程所创建的所有CCtrlBase对象总数
CLASS_ID            class_id_;          // 基类和派生类的类型标识
CString             class_name_;        // 基类和派生类的类型名
int                 m_object_index;     // 对象的索引值;对于无管理对象的独立对象该值由基类构建函数维护,否则由管理对象维护

public:

// Implementations
private:
protected:

int              GetSize(void*p);      // 根据内存指针计算临时内存分配的空间大小(bytes)。

CString          GetClassName();       // 用于获取当前对象的类名字串
CUDPSocket      *GetUDPSocketPtr();    // 根据ptrClass指针获得Node实例指针,注意ptrClass的ClassID class_id_必须是_CNode

public:
CLASS_ID  GetClassID();// 用于获取当前对象的类名属性值(枚举类型标识)
int       SetObjID();// 用于设置ptr对象的m_object_index,当ptr为NULL时,设置为自动累加的值,否则设为其派生类或管理类中的列表索引值
int       GetObjID();// 用于查询并ptr对象的m_object_index,当ptr为NULL时,返回其派生类或管理类中的m_object_index,否则返回该对象在派生类或管理类的列表索引值,实际上通过调用其派生类或管理类的该函数以获取该值。
CCtrlBase*GetParentPtr();// 返回其管理类对象的指针,即控制者指针
void      SetCallBack(CCtrlBase *ptr, bool bReplace=true);  

}
全部回答
  • 1楼网友:鸽屿
  • 2021-01-31 17:24
typeid(typename).name()
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯