在另一个类的2个函数内操作一个类的向量

时间:2011-07-05 13:53:32

标签: c++ class templates

这似乎非常复杂,我尝试了很多来解决它,但是当我调整模板/类中的私有成员时,即,当我调用Operator :: 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类中完成,普通的一个没有模板,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

1 个答案:

答案 0 :(得分:1)

我想你想通过引用把你的载体放进去:

void InitExtVector(std::vector <Base<float> > & BaseVect);
void ShowExtVector(std::vector <Base<float> > & BaseVect);

另外,你的意思是在InitExtVector:

for(i=0 ; i < BaseVect.size() ; ++i){
    pVect=BaseVect[i].dataVect();
    pVect->resize(10);
}