2011-07-05 28 views
-3

這似乎非常非常複雜,我嘗試了很多解決方法,但是當我調整模板/類中的私有成員時,即當我調用Operator :: InitExtVector,我通過它的地址調整intVect大小,當我顯示/調用Operator :: ShowExtVector時,它的大小再次爲0,這不應該發生。爲什麼矢量信息丟失了?處理另一個類的2個函數中的一個類的向量

我有一個模板/類,Base.H:

#include <vector> 
typedef std::vector <unsigned long int > varVect1D_ul; 

<template <typename PS> 
class Base{ 
private: 
    PS bla; 
    varVect1D_ul intVect;  

public: 
     varVect1D_ul* dataVect(){return &intVect} 
} 

一些操作在操作類中完成的,正常的沒有模板,Operator.H:

class Operator{ 
    public: 
    ..... 
    private: 

    void InitExtVector(std::vector <Base<float> > BaseVect){ 
      varVect1D_ul *pVect; 

      for(i=0...BaseVect.size()){ 
       pVect=dataVect(); 
       pVect->resize(10); 
       }    
     } // end InitExtVector 

    void ShowExtVector(std::vector <Base<float> > BaseVect){ 
      varVect1D_ul *pVect; 

      for(i=0...BaseVect.size()){ 
       pVect=BaseVect[i].dataVect(); 
       cout<<pVect->size(); 
       } 
    }//end ShowExtVector 

    }; //end class 

,和客戶端代碼如下所示 someOperations.C:

#include "Base.H" 
    #include "Operator.H" 


    foo(){ 

    std::vector <Base<float> > BaseVect(2); 
    //do some initization of BseVect; 

    Operator *ObjOper= new Operator;  

    ObjOper->InitExtVector(BaseVect); 
    ObjOper-> ShowExtVector(BaseVect); 



    } 

所有語法是好的,地址裏面InitExtVect和ShowExtVector pVect的是相同的

任何幫助將非常樂意讚賞

方面

JORR

+0

我爭辯說,所有語法都可以,因爲你說'