以下是一个在树形控件中查找某项的递归函数,在vc6中正常,但在vc2005中出错:"error C2248: 'CObject::CObject' : cannot access private member declared in class 'CObject",这表明,在vc2005以上的版本中好象无法实现递归函数了,那么该怎么解决呢?finditem(CTreeCtrl tree,HTREEITEM item,CString strtext)    
{
   HTREEITEM  hfind;   
   if(item== NULL)//空树,直接返回NULL    
      return  NULL;   
   while(item!=NULL)//遍历查找    
   {   
      if(tree.GetItemText(item) == strtext)//当前节点即所需查找节点   
         return item;   
      if(tree.ItemHasChildren(item))//查找当前节点的子节点   
      {   
         item=tree.GetChildItem(item);  
         hfind=finditem(tree,item,strtext);//递归调用,在vc2005中引起错误
         if(hfind)   
         {
            return  hfind;
         }   
         else   //子节点中未发现所需节点,继续查找兄弟节点 
         item = tree.GetNextSiblingItem(tree.GetParentItem(item));   
      }   
      else
  {   //若无子节点,继续查找兄弟节点 
         item =tree.GetNextSiblingItem(item);   
      }   
   }   
   return item;
}

解决方案 »

  1.   

    这不是说不能实现递归,英文意思是:不能访问类CObject的私有变量
      

  2.   

    Compiler Error C2248
    Members of a derived class cannot access private members of a base class. You cannot access private or protected members of class instances.http://blog.csdn.net/vincent_lon/archive/2008/09/19/2950218.aspx
      

  3.   

    谢谢各位的解答,但好象都不是我需要的答案;我需要的是将我的开篇代码(vc6.0版本)如何改变为vc2005版本(非.net版)?
      

  4.   

    finditem(CTreeCtrl &tree,HTREEITEM item,CString strtext)  换成指针或者引用。