在另一个类的两个函数中操作一个类的向量

Manipulating a vector of one class inside of 2 functions of another class

本文关键字:操作 一个 向量 函数 另一个 两个      更新时间:2023-10-16

这似乎非常非常复杂,我尝试了很多来解决它,但是当我在模板/类内部调整一个私有成员的大小时,即,当我调用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);

  }

所有语法都是Ok的,pVect在InitExtVect和ShowExtVector中的地址是相同的

任何帮助都将不胜感激

JORR

我认为你想通过引用来获取向量:

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);
}    
相关文章: