前一位朋友教我
A a;
a.aa();
问题解决了。新的问题是:
  我做的是一个B+树,想按一下insert按钮,就往树里插入一个节点。
  A a;
  a.aa();正是写在插入按钮的代码中,A指的是B+树的类,aa指的是插入节点操作。
  如果这样写的话,每按一下,都会生成一个B+树的对象。  我想解决方法可能是设一个flag,来看我的B+树是不是空的,如果是空的话,
  就生成一个B+树的对象,以后就不生成新的对象了。
  以下是我的代码:
if ( flag == 0 )
{
CBplusTree myTree;
myTree.insertNode( );
}
else
{
myTree.insertNode( );
}   问题是,
     首先,我的flag应定义在什么地方,
     是不是也要定成static的,才不会丢失。
     其次,如果是else的情况,myTree也是没定义过,会出错,
     如何把myTree保留下来。
   谢谢

解决方案 »

  1.   

    你的创建对象的时机不对
    在第一次需要B+树对象的时候创建之然后在你点击按钮的响应事件中insert操作
      

  2.   

    你设置flag的方法也可以
    flag可以定义在什么地方,很容易
    你上边这些代码需要在什么类中调用?那就把flag定义为这个类的成员变量但是,坦言之,我认为你上边的代码效率不高,每次都要判断树是不是空
      

  3.   

    我的方案:
    1.首先涉及到B+树类对象的地方创建对象
      CBplusTree myTree;

    2.在Insert按钮的响应事件中调用插入操作
      myTree.insertNode( );3.不用判断flag
      

  4.   

    我第一次涉及B+树类的地方,应该就是点插入按钮时,
    在第一个节点都没有的时候,不用定义B+树对象,另,如果是在别的地方创建了对象myTree,
    那么每次点Insert时,是不是要把myTree做为参数传过来?
    不然的话,myTree是未定义啊
    还是有别的方法,直接可以使用myTree我对VC和MFC是新手,很多地方概念不清,请指教
      

  5.   

    myBTreePlusDlg里加了一个成员变量CBPlusTree myTree;
    在myBTreePlusDlg.cpp里的Insert事件中,  调中 myTree.insertNode(参数);CBplusTree里有成员函数insertNode(参数);
    在实现void CBplusTree::insertNode(参数)时,
    需要从树的根开始查找,则我在里面写了
    {
        myTree.root = ....;
    }出错信息说myTree未声明。
    我觉得和我原来的问题有点类似,
    前面可以在myBtreePlusDlg里加一个成员变量解决
    现在好象有点问题。
    是不是只有把myTree也当成参数传过来?
    或者说我的思路就是错的。
    因为我另一个朋友告诉我说不可能在里面调用myTree
    可是没讲明白。