membervariable übergeben



  • ich erklärs am besten am quelltext.
    Ausgangspunkt:

    //header 
    class CSpFile  
    {
    public:
    
       int   m_intChunkIndex; //<- membervariable
            .......
    //cpp
    CString CSpFile::GetBonePath(const char *FilePath, const char *lookfor, const char *Begin)
    {
       CSnakeFile SnkFile = CSnakeFile(FilePath);
       int nBones = SnkFile.GetFieldChunkCount(Begin);
       int ChunkIndex = 0;
    
       if (nBones == 0)
       {
          CString dummy = "No animation available";
          return dummy;
       }
    
       for(int i = 0; i < nBones; i++)
       {
          CString ChunkPrefix;
          ChunkPrefix.Format("%s[%i]", Begin, i); 
          CString NamePrefix = ChunkPrefix + ".name" ;
          CString Name = SnkFile.GetFieldStr(NamePrefix, 0);
    
          if (Name == lookfor) 
          {     
             //CString dummyPath = ChunkPrefix + "." + Name;   
             //return dummyPath;
             ChunkIndex = i; // membervariable=i, das funzt     
                                               noch laut debuger
    
             return NamePrefix;
                    }                        
       }   
       CString dummy = "No animation available";
       return dummy;
    }
    
    diese membervariable brauch ich dann in einer anderen klasse:
    
    void CBonesTreeDlg::OnSelchangedBonestree(NMHDR* pNMHDR, LRESULT* pResult) 
    {
       NM_TREEVIEW   *pNMTreeView = (NM_TREEVIEW*)pNMHDR;
    
       CMyTreeCtrl *pMyTree = (CMyTreeCtrl*)GetDlgItem(IDC_BONESTREE); 
       HTREEITEM hSelected = pNMTreeView->itemNew.hItem;
    
       CSpFile pSpFile;
    
       if (hSelected != NULL)
       {      
          TV_ITEM item;
          item.hItem = hSelected;
          VERIFY (pMyTree->GetItem(&item));
    
          LPCSTR Begin        = "data[0].path_array";
          CString currentItem = pMyTree->GetItemText(item.hItem);
          CString currentBone = pSpFile.GetBonePath((LPCSTR)m_strSpPath, (LPCSTR)currentItem, Begin);
          CString dummyCBone  = currentBone;
          CString dummyPath   = "Path for " + currentItem + ": " + 
                    dummyCBone;
    
          int ChunkIndex1 = 0;
          ChunkIndex1 = pSpFile.ChunkIndex; //<- !!!!!!!!!!!
    //hier sollte eigentlich der wert der membervariable an den integer 
    //ChunkIndex1 übergeben werden, aber das klappt nicht, WARUM ?????
    
          SetDlgItemText (IDC_TREETEXT1, currentItem);
          SetDlgItemText (IDC_TREETEXT2, dummyPath);
    
          //   pMyTree->SetItemImage(item.hItem,0,1); 
          pMyTree->SetItemImage(item.hItem,0,1); // BOOL SetItemImage( 
                     HTREEITEM hItem, int nImage, int nSelectedImage );
    
          if (!(dummyCBone.Compare("No animation available") == 0))
          {
             pSpFile.Deactivate((LPCSTR)m_strSpPath,ChunkIndex1);
                            //hier brauch ich die variable letzendlich
             ReadWriteFile();
          }
          else
          {
             return;
          }
    
       }
    
       *pResult = 0;
    }
    

    für alle die keine lust haben auf den quelltext, soweit ich das nachvollziehen kann will ich den wert einer membervariable von einer klasse an ein andere
    übergeben.wenn möglich bitte kleines codebeispiel.danke

    [ Dieser Beitrag wurde am 09.10.2002 um 11:30 Uhr von C-O-M-M-A-N-D-E-R editiert. ]



  • Nutz doch mal bitte die code-Tags!
    🙄
    und hättest du das gleich gemacht, so wäre der Code auch lesbarer gewesen... 😉 ...und dir Tabs auch... 😞 :p 😃

    Hab deinen Code raus genommen, macht den Thread nen bissel kürzer 😉 ist nicht gegen dich gerichtet...wollte es nur übersichtlicher gestalten 🙂

    [ Dieser Beitrag wurde am 09.10.2002 um 11:31 Uhr von C-O-M-M-A-N-D-E-R editiert. ]

    No Probs... 😉

    [ Dieser Beitrag wurde am 09.10.2002 um 12:04 Uhr von Hexagon editiert. ]



  • Wenn du glaust das sich jemand dieses Codewir war durchliest, dann
    möge Gott mit dir sein...

    Devil



  • ok ok, ganz ruhig.punkt eins, sorry aber ich hab leider kein plan wie man die code-tags nutz,echt nicht.ich weiss das man im edit unten ne menge knöpfe zum klicken hat, nur immer wenn ich einen klicke verreckt mir der browser (???)

    @devil

    der code ist nicht zwangsläufig zum durchlesen.ich habe ein prob das vielleicht missverstanden werden könnte, deswegen der code nur als hilfe (ich weiss das der ziemlich mies ist...)
    alles was ich wissen wollte wie man den wert einer membervariablen einer klasse in einer anderen klasse nutzen kann.wer mir das jemand ohne code erklären könnte, umsobesser

    gruss pain



  • Übergabe als Parameter ist des Rätselslösung...
    ...und wenn du die auch noch verändern möchtest, so mußt du sie als Referenz oder Zeiger übergeben... 😉




Anmelden zum Antworten