我想运行时遍历自己写的一个类的成员,要知道成员的类型与值,可没有思路,请高手指点

解决方案 »

  1.   

    我用在sock数据自动组包中Add_Package(struct type & st)传入的结构自动加入到包用但我相写一个函数适应所有的结构
      

  2.   

    听说java的基类有这样的方法,不知道怎么实现的
      

  3.   

    干脆你在你的类中直接添加一个成员函数GetMember()
    那么你想怎么得到或得到什么都可以san
      

  4.   

    今天刚来,找了半天,不知道在哪里提问题?也不知道怎么给分,我有一个问题急呀!
    我在VC中已经可以将一个普通的文件存放到数据库的BLOB字段中,请问怎么将OLE文件存放到数据库中呀?哪位大侠曾经搞过,望指点,感激不尽!
      

  5.   

    哈哈,我来帮你实现!///////////////////////////
    struct SNode
    {
      public:
    CBase* pData;
    SNode* pNext;
    //
    SNode()
    {
    pData = NULL;
    pNext = NULL;
    }
    };
    /////////////////////////////////////////////////////////////////////////////////////////////
    class CTotalList
    {
    public:
    CTotalList(){m_head = NULL;};
    public:
    void RemoveNode(CBase* pData);
    void InsertData(CBase* pData);
    public:
    SNode* m_head;
    };  void CTotalList::RemoveNode(CBase* pData)
    {
    if(m_head == NULL)
    return;

    SNode *pNodePre=m_head, *pNode;
    while(pNodePre->pNext!= NULL)
    {
    if(pNodePre->pNext->pData == pData)
    {
    pNode = pNodePre->pNext;
    pNodePre->pNext = pNodePre->pNext->pNext;
    delete pNode;        
    }
    }   
    }void CTotalList::InsertData(CBase* pData)
    {
    SNode * pNode = new SNode;
    pNode->pData = pData;

    if(m_head == NULL)
    {
            m_head = pNode; 
    }
    else

    SNode * pNodeLast = m_head;
    while(pNodeLast->pNext != NULL)
    pNodeLast = pNodeLast->pNext;
    pNodeLast->pNext = pNode;
    }
    }
    //////////////////////////////////////////////////////////////////
    //////////////////////////////////////////////////////////////////
    class CBase
    {
    public:
        CBase();
    ~CBase();

    private:
        void AddToTotalList();//对象加入遍历连表
        void RemoveFromTotalList();//对象指针从遍历连表删除
        
    public:
        static CTotalList m_lst;
    };CTotalList CBase::m_lst;CBase::CBase()
    {
    AddToTotalList();  
    }CBase::~CBase()
    {
    RemoveFromTotalList();  
    }void CBase::AddToTotalList()
    {
    m_lst.InsertData(this);  
    }void CBase::RemoveFromTotalList()
    {
    m_lst.RemoveNode(this);  
    }///////////////////////////////////////////////////////////////////////啊,终于写完了,呵呵,但是没有测试,请楼主代劳了!
    很久没有这么专心写了!
      

  6.   

    ///////////////////////////
    struct SNode
    {
      public:
    CBase* pData;
    SNode* pNext;
    //刚才这里是中文字符,编译不通过的
    SNode()
    {
    pData = NULL;
    pNext = NULL;
    }
    };
    ///////////////////////////
      

  7.   

    呵呵,昨天晚上突然想起来要用虚析构
    //////////////////////////////////////////////////////////////////
    class CBase
    {
    public:
        CBase();
        virtual ~CBase();

    private:
        void AddToTotalList();//对象加入遍历连表
        void RemoveFromTotalList();//对象指针从遍历连表删除
        
    public:
        static CTotalList m_lst;
    };
      

  8.   

    如果需要继承类  
    记得构造函数要调用CBase();