2011-07-05 3 views
-3

Это очень сложно, я много пытался его решить, но когда я изменяю размер частного члена внутри шаблона/класса, т. Е. Когда я вызываю оператор :: InitExtVector, я изменяю размер intVect по его адресу, и когда я показываю/вызываю Operator :: ShowExtVector, его размер равен 0, что не должно происходить. Почему теряется векторная информация?Манипулирование вектором одного класса внутри двух функций другого класса

У меня есть шаблон/класс, 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); 



    } 

Все синтаксис в порядке, адреса из pVect внутри InitExtVect и ShowExtVector такие же

Любая помощь будет с удовольствием оценили

Regard

JORR

+0

Я оспариваю, что весь синтаксис в порядке, так как вы говорите '