二楼说的只能在类模板中才能用。
我尝试过这种方法,先声明一个基类,其他类在其基础上进行派生:
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(voidp); // 根据内存指针计算临时内存分配的空间大小(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,否则返回该对象在派生类或管理类的列表索引值,实际上通过调用其派生类或管理类的该函数以获取该值。
CCtrlBaseGetParentPtr();// 返回其管理类对象的指针,即控制者指针
void SetCallBack(CCtrlBase ptr, bool bReplace=true);
/
// 调用方法:pObj->SetCallBack(this)
// 用于指定使用本对象的管理者类函数的实例对象指针。
/
}
一般状况下,发布出去的程序是不带调试信息(Debug Information),所以无法取得详细信息(Call stack,单元名称,方法以及行数)。
若要临时跟踪使用,可以编译一个带调试信息的exe,放上一个JVDebugHandle,设定好路径后,异常信息则可以输出到txt文件中,该控件提供了足够的信息让你了解问题所在。
可能你想自己定义异常,在异常捕捉处,自己填充需要的信息。
添加
一)
char GetName()
{
return Name; //获取等级60
}
二)
void Pk(CBoss &b)
{
cout<<bGetLv()<<endl; //输出CBoss类的对象的等级,也就是60
cout<<bGetName()<<endl;
}
需要准备的材料分别有:电脑、html编辑器、浏览器。
1、首先,打开html编辑器,新建html文件,例如:indexhtml,填充问题基础代码。
2、在indexhtml中的<script>标签,输入js代码:$('body')append($('button')attr('class'));。
3、浏览器运行indexhtml页面,此时按钮的class名被js取到并打印了出来。
以上就是关于如何在C++中获得完整的类型名称全部的内容,包括:如何在C++中获得完整的类型名称、处理Application.OnException时,如何获取具体类的名称呢、C++类里面获取名字的方法等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)