2011-07-05 4 views
-3

이것은 매우 복잡해 보입니다. 해결하기 위해 많은 노력을 기울였습니다. 그러나 템플릿/클래스 내에 private 멤버의 크기를 조정할 때, 즉 Operator :: InitExtVector, 주소를 통해 intVect의 크기를 조정하고 Operator :: ShowExtVector를 표시/호출 할 때 크기가 0입니다. 다시 발생하지 않아야합니다. 왜 벡터 정보가 손실 되었습니까?다른 클래스의 2 개의 함수 중 한 클래스의 벡터 조작

#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 

및 클라이언트

나는 템플릿/클래스, Base.H이

모든 구문은 괜찮
#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); 



    } 

, 주소 : 코드 someOperations.C처럼 보인다 InitExtVect 및 ShowExtVector 내부 pVect의 같은

어떤 도움이 될 것입니다 기꺼이 감사

시선

JORR 난 당신이 참조에 벡터를 먹고 싶어 생각

+0

나는'